我在这个网站上看到了这段代码 . 它使用一种方法来排序一个数组,其中偶数出现在前面,而奇数出现在数组的后面 . 我想知道你是否可以做同样的事情,除了先让奇数出现然后出现偶数?我试过但无济于事 . 我是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
3 回答
好吧,如果你想要奇数是第一个,用
%2==0
替换任何%2!=0
,用%2!=0
替换任何%2==0
:试试类似的东西: