当前位置: 首页 > 面试题库 >

交换数组中的奇数和偶数

丁绪
2023-03-14
问题内容

我在此站点上看到了此代码。它使用一种方法来对数组进行排序,其中偶数排在数组的前面,而奇数排在数组的后面。我想知道您是否可以做同样的事情,除了先显示奇数,然后再显示偶数?我试过了,但无济于事。我是Java编程的新手,我想测试递归。

public class Recurse {

//i=left 
//j=right
//first i tried to shift the whole thing
//have all even numbers pop to the front of array when even
public static int[] seperator(int[] arr1, int left, int right){
    int temp;
    if(left>=right)       //base case, return array
        return arr1; 
    else if(arr1[left]%2!=0 && arr1[right]%2==0){//if match, do the swap
        temp=arr1[left];
        arr1[left]=arr1[right];
        arr1[right]=temp;   
        return seperator(arr1, left+1, right-1);
    }
    else{
        if(arr1[right]%2!=0){//if right side is on odd #, then decrease index
            return seperator(arr1, left, right-1);
        }
        if(arr1[left]%2==0){//if left side is on even #, then increase index
            return seperator(arr1, left+1, right);
        }
    } 
    return arr1;
}

public static void main(String[] args){

    //int index=0;
    int[] arry={70,13,48,19,24,5,7,10};

    int[] newarry=seperator(arry, 0, arry.length-1);
    System.out.print("The new sorted array is: ");
    for(int i=0; i<newarry.length;i++){
        System.out.print(newarry[i]+" ");
    } 
}

}

输出是这样的:

  The new sorted array is: 70 10 48 24 19 5 7 13

问题答案:

好吧,如果你想单号是第一位的,取代任何%2!=0%2==0任何%2==0%2!=0

  public static int[] seperator(int[] arr1, int left, int right){
    int temp;
    if(left>=right)       
      return arr1; 
    else if(arr1[left]%2==0 && arr1[right]%2!=0){
      temp=arr1[left];
      arr1[left]=arr1[right];
      arr1[right]=temp;   
      return seperator(arr1, left+1, right-1);
    }
    else{
      if(arr1[right]%2==0){//if right side is on even #, then decrease index
        return seperator(arr1, left, right-1);
      }
      if(arr1[left]%2!=0){//if left side is on odd #, then increase index
        return seperator(arr1, left+1, right);
      }
    } 
    return arr1;
  }


 类似资料:
  • 我有一个布尔方法的麻烦,我想检查数组是偶数,奇数,还是两者都不是。我输入数组大小和数组值,但是“isArrayEven”方法仍然输出“array中的所有数字都是偶数”,即使我的数组是1、2、3并且isArrayEven假定是false。 我

  • 如何添加代码以查找此程序数组中的零?此代码可以计算偶数和奇数。我应该做一个不同的语句,还是可以添加另一个如果其他语句?

  • 问题内容: 给定一个整数数组,您需要将数组中的奇数和偶数分开。 请注意:元素的顺序可以更改。 例如: 问题答案: 让我们说数组是 初始化两个索引变量, 和 增加左变量直到你得到奇数 递减右边的变量,直到你得到偶数。 如果 ,交换 和 最后,您会看到左侧有偶数,右侧有奇数。 用于分隔数组中奇数和偶数的 Java 代码: 当你运行上面的程序时,你会得到以下输出:

  • 我们有一个偶数放置排序和奇数放置排序的数组,这意味着偶数索引的子数组被排序,奇数索引的子数组被排序。例如-{1,4,2,7,4,18,5,19,20}两个排序的子数组是{1,2,4,5,20}和{4,7,18,19}-一组有偶数索引,另一组有奇数索引。有没有一种方法可以用O(1)空间复杂度和O(n)时间对整个数组进行排序?

  • 我有一个字符串在C#与"维基语法",我想取代的值。 问题是,我想将成对的值替换为不同的值。

  • 本文向大家介绍在JavaScript中将数组的和确定为偶数还是奇数,包括了在JavaScript中将数组的和确定为偶数还是奇数的使用技巧和注意事项,需要的朋友参考一下 问题 我们需要编写一个JavaScript函数,该函数接受一个整数数组arr。如果数组的所有元素之和为奇数,则函数应返回字符串“ odd”,如果为偶数则返回“偶数”。 示例 以下是代码- 输出结果 以下是控制台输出-