Java的伪代码--Hoare';s分割算法——What';这里怎么了?
我正在尝试实现这一点: 在pseudo中,事物从1开始。在我的代码中,事情从0开始。除此之外,没有区别 我得到了错误的结果:Java的伪代码--Hoare';s分割算法——What';这里怎么了?,java,algorithm,sorting,quicksort,Java,Algorithm,Sorting,Quicksort,我正在尝试实现这一点: 在pseudo中,事物从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 = hPart
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;
}
}
}
提示:“while”和“until”有相反的含义。@realponsuggest谢谢!现在我得到了部分错误的结果。更新了我的问题。有什么想法吗?我的错,它工作正常!但是我不知道为什么!!此实现中还有另一个错误:如果A[i]和A[j]都等于轴,则有一个无限循环。提示:“while”和“until”具有相反的含义。@realpoint谢谢!现在我得到了部分错误的结果。更新了我的问题。有什么想法吗?我的错,它工作正常!但是我不知道为什么!!这个实现中还有另一个bug:如果A[i]和A[j]都等于枢轴,那么就有一个无限循环。
hQuickSort(arr, 0, 5);