我希望能够采用这种快速排序方式,使得奇数以原始顺序列出,偶数以原始顺序列出,但奇数首先是偶数。
这是最初的快速排序程序:
public static void bubbleSort(int [] list){ boolean needNextPass = true;
for (int b = 1; b < list.length && needNextPass; b++) {
needNextPass = false;
for (int i = 0; i < list.length - b; i++) {
if (list[i] > list [i + 1]) {
int temp = list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
needNextPass = true;
}
}
}
}
public static void main(String[] args) {
int[] list = {10, 11, 12, 14, 9, 7, 8, 16, 6, 5, 4, 1, 3, 2, 14, 13, 16, 15, 17, 18};
bubbleSort(list);
for (int i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
}
} 我想打印11 9 7 5 1 3 13 15 17 10 12 14 8 16 6 4 2 14 16 18
而不是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 14 15 16 16 17 18
答案 0 :(得分:0)
最简单的方法是将列表拆分为奇数和偶数,然后将偶数列表附加到奇数列表。那也会更快 - 它是O(n)而不是O(n log n)。
答案 1 :(得分:0)
您使用错误的工具完成工作。你不需要排序。您只需要对数字进行一次传递,然后将它们添加到2个不同的列表中。