Я только что реализовал алгоритм 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;
}
}
}
ИСХОДНЫЙ CALL:
quicksort(A, 0, A.length - 1);
как я вычислить сложность пространства для сортировки?
спасибо ребята
Пожалуйста, не спрашивай два разных вопроса в том же вопросе. Для вашего второго вопроса вы, вероятно, должны просто использовать Google. –
Вы должны использовать отладчик для выполнения вашей программы по строкам, чтобы определить, где его поведение отличается от ожидаемого. –
O (N^2) - худший случай. Среднее и лучшее - O (log N) – squiguy