伪代码到Java - Hoare的分区算法 - 这里有什么问题?

时间:2015-11-14 17:09:12

标签: java algorithm sorting quicksort

我试图实现这个:

在伪事情中从1开始。在我的代码中,事情从0开始。除此之外没有区别。

我的结果不正确:

arr content:
11  2   4   1   7   5   
New arr content:
1   2   4   7   11  5   

我做错了什么?

public static void hQuickSort(int[] A, int p, int r) {

    if (p < r) {

        int q = hPartition(A, p, r);

        hQuickSort(A, p, q);
        hQuickSort(A, q + 1, r);
    }

}

public static int hPartition(int[] A, int p, int r) {
    int pivot = A[p];
    int i = p;
    int j = r;
    int temp;

    while (true) {
        while (A[i] < pivot) {
            i++;
        }

        while (A[j] > pivot) {
            j--;
        }

        if (i < j) {
            temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        } else {
            return j;
        }
    }

}

使用包含6个元素的数组调用:

    hQuickSort(arr, 0, 5);

0 个答案:

没有答案