我正在尝试实施快速排序,但我没有得到正确的结果。这是我的代码:
public static void quickSort(Comparable[] a, int start, int stop) {
if (start < stop) {
int pivot = partition(a, start ,stop);
System.out.print("Pivot: "+a[pivot]+" Array: ");
printArray(a);
quickSort(a,start,pivot-1);
quickSort(a,pivot+1, stop);
}
}
public static int partition(Comparable[] a, int start, int stop) {
Comparable pivot = a[stop];
int i = start;
int j = stop-1;
while (i < j) {
while( (isLess(a[i], pivot)|| isEqual(a[i], pivot)))
i++;
while((isGreater(a[j], pivot)|| isEqual(a[j], pivot)))
j--;
if(i < j)
swap(a, i,j);
}
swap(a,i, stop);
return i;
}
输入:{51,17,82,10,97,6,23,45,6,73},我得到结果:6 6 10 17 23 45 51 73 97 82 输入:{12,9,4, 99,120,1,3,10},我得到一个索引越界错误。希望能在我出错的地方提供一些帮助。