クイックソートを実装しようとしていますが、正しい結果が得られません。これが私のコードです:
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}、範囲外のインデックス エラーが発生しています。私が間違っている場所で助けていただければ幸いです。