我试图实现这个:
在伪事情中从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);