本から QuickSort アルゴリズムを実装したところ、奇妙な出力が得られました。動作しますが、昇順ではなく降順でソートされます。例: [1, 5, 2, 10, 6, 9, 8, 3, 7, 4] は [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] に並べ替えられます。私のコードでソースを見つけます:
private void quicksort(int[] A, int p, int r) {
if (p < r) {
int q = partition(A, p, r);
quicksort(A, p, q);
quicksort(A, q + 1, r);
}
}
private int partition(int[] A, int p, int r) {
int x = A[p]; // pivot
int i = p;
int j = r;
while (true) {
while (A[i] > x) {
i++;
}
while (A[j] < x) {
j--;
}
if (i < j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
} else {
return j;
}
}
}
最初の呼び出し:
quicksort(A, 0, A.length - 1);
クイックソートのスペースの複雑さを計算するにはどうすればよいですか?
君たちありがとう