-2
我没有任何编译错误,但仍无法正常工作。我认为这是关于数组边界的东西,但我无法修复它。我试图改变他们,但仍然没有工作。快速排序不起作用
这里是我的代码:
public class QuickSort {
public static void main(String[] args) {
int[] A = new int[] {6,2,7,8,1};
quickSort(A,0,A.length-1);
printArray(A);
}
public static void quickSort(int[] A,int P,int r){
int Q = partition(A,P,r);
if (P < Q-1){
quickSort(A,P,Q-1);
}
if (Q < r){
quickSort(A,Q,r);
}
}
public static int partition(int[] A,int P, int r){
int i = P; //left
int j = r; //right
int pivot = A[(P+r)/2];
int temp;
while (i <= j){
while (pivot > A[i]){
i++;
}
while (pivot < A[j]){
j--;
}
if (i <= j){
temp = A[i];
A[i] = A[j];
A[j] = temp;
i++;
j--;
}
}
return j;
}
public static void printArray(int[] A){
for (int i = 0; i < A.length;i++){
System.out.println(A[i]);
}
}
}
参数P将开始和r是年底。我从中间选择枢轴点
这个问题可以被视为寻求帮助调试。 – OPK
我在YouTube上的几个视频的帮助下编写了这个程序,但它没有运行,我无法修复它。 – Jallad
* ...但它仍然无法正常工作... * - 它不起作用?你给了什么输入?预期与实际产出是多少?在请求调试帮助时,[MCVE](http://stackoverflow.com/help/mcve)比预期人们自己将测试用例本身放在一起更有帮助。 – azurefrog