需要对数组中的奇数值进行排序,但偶数值必须保留在原地。
以下是我的代码:
public static int[] sortArray(int[] array) {
int length = array.length;
int temp = 0;
for (int i = 0; i < length; i++) {
for (int j = 1; j < length - i; j++) {
if (j > 0 && array[j] % 2 == 0)continue;
if (array[j - 1] > array[j]){
temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
return array;
}
输入:new int[]{5, 3, 2, 8, 1, 4, 0}
输出:[1, 3, 5, 2, 8, 4, 0]
但我需要:[1, 3, 2, 8, 5, 4, 0]
如何跳过数组中的某些索引?
认为应该使用continue
运算符来解决,但我不知道如何操作。
array[j]
为奇数时,你不能仅仅交换它与其直接前驱的位置,因为其前驱可能是偶数。你需要找到最近的奇数前驱来确定是否需要进行交换。 - pjs