我正在尝试在 java 中实现几种不同类型的快速排序,但我的实现似乎都没有工作。我查看了整个互联网,我的代码看起来与我找到的所有代码非常相似,所以我不知道出了什么问题。我的代码如下:(请注意,这不完整,但我想如果我发现一个快速排序有什么问题,其他版本也可以)编辑:我遇到的问题是数组没有排序正确。我运行了一个名为 isSorted 的简单方法来告诉我数组是否正确排序。它适用于其他排序方法(插入排序、堆排序等),但在与我的快速排序实现一起使用时报告错误
public static void quickSort(int[] A) {
flag=0;
quickSortHelper(A, 0, A.length-1);
}
public static void quickSortHelper(int [] A, int low, int high){
if(low<high){
if(flag==0){
int q=DPartition(A, low,high,A[high]);
quickSortHelper(A,low,q-1);
quickSortHelper(A,q+1,high);
}
public static int DPartition(int [] A, int low, int high,int pivot){
int p=pivot;
int i=low;
int j=high-1;
while (i<=j){
while(i<=j && A[i]<=p){
i=i+1;
}
while(j>=i && A[j]>=p){
j=j-1;
}
if (i<j){
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
int temp = A[i];
A[i] = A[p];
A[p] = temp;
return i;
}