java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?
基本上,这是一个在线挑战,你必须以升序排列数组中的奇数,同时忽略偶数。例如,[3,1,4,2,3,6]将是->;[1,3,4,2,3,6]. 我已经写了一个算法来对数字进行排序,但是输出是错误的
import java.util.Arrays;
public class Kata {
public static int[] sortArray(int[] array) {
int n;
int temp = 0;
if (array.length < 2){
System.out.println(Arrays.toString(array));
return array;
}
for (n = 1; n < array.length; n++) { // iterates through array
if (array[n] % 2 != 0 && array[n] > array[n-1] && array[n-1] % 2 != 0){ // if n is odd and smaller than n-1 and n-1 is odd
temp = array[n];
array[n] = array[n-1];
array[n-1] = temp;
}
else if (array[n] % 2 == 0 && array[n] < array[n-1]){
array[n] = array[n];
}
else if (array[n] % 2 != 0 && array[n] > array[n-1]){
array[n] = array[n];
}
}
System.out.println(Arrays.toString(array));
return array;
}
}
驱动程序代码
public class Driver {
public static void main(String[] args) {
Kata.sortArray(new int[]{3,1,11,2,9});
}
}
对于上面的数组,输出应该是:[1,3,9,2,11],而不是[3,11,1,2,9]。我已经盯着这个看了很久了,老实说,我被难住了。非常感谢您的阅读
# 1 楼答案
我使用一个内部循环来查找下一个要排序的奇数。我使用了一个额外的外循环,因为通常排序需要两个循环