-3
Когда я запускал свой код QuickSort и вводил числа. Не было никакого выхода. Я не знаю проблемы.[QuickSort] Проблемы с рекурсией
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
void quickSort(int *pA, int left, int right) {
int i, j, t, temp;
temp = pA[left];
i = left;
j = right;
while (i != j) {
while (i < j && pA[j] >= temp)
j--;
while (i < j && pA[i] <= temp)
i++;
if (i < j) {
t = pA[i];
pA[i] = pA[j];
pA[j] = t;
}
}
pA[left] = pA[i];
pA[i] = temp;
quickSort(pA, left, i - 1);
quickSort(pA, i + 1, right);
}
int main() {
int i, n, a[100];
printf("please input the total of numbers:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("number %d is:", i + 1);
scanf("%d", &a[i]);
}
quickSort(&a, 0, n - 1);
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
Следующая был код работает картинка:
так вы называете 'быстрой сортировки()' 'внутри быстрой сортировки()'? как вы ожидаете завершения этого цикла? – Flikk
Нажмите на серое поле слева от 'while (i! = J). Появится красная точка; он называется «точкой разрыва». Нажмите F5 для запуска кода. Как только линия с красной точкой будет достигнута, программа остановится и дождитесь ваших действий. Нажмите F10, чтобы перейти к следующей строке. Если курсор находится на вызове функции, нажмите F11, чтобы войти в него. Чтобы узнать больше об этом трюках, выполните поиск «отладки VS» в вашей любимой поисковой системе. – dasblinkenlight
Вам нужно условие остановки. Если размер среза меньше 2, то 'quickSort' должен возвращаться без каких-либо новых вызовов для себя. –