快速排序问题排序奇怪然后甚至

时间:2011-02-22 19:17:05

标签: quicksort

我希望能够采用这种快速排序方式,使得奇数以原始顺序列出,偶数以原始顺序列出,但奇数首先是偶数。

这是最初的快速排序程序:

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

2 个答案:

答案 0 :(得分:0)

最简单的方法是将列表拆分为奇数和偶数,然后将偶数列表附加到奇数列表。那也会更快 - 它是O(n)而不是O(n log n)。

答案 1 :(得分:0)

您使用错误的工具完成工作。你不需要排序。您只需要对数字进行一次传递,然后将它们添加到2个不同的列表中。