Мой код:C++ - Быстрая сортировка - реализация на заказ не работает
void quickSort(int array[], int last)
{
int middle = last/2;
int i = 0, j = last;
while(i <= j)
{
while(array[i] < array[middle])
i++;
while(array[j] > array[middle])
j--;
if(i <= j)
{
swap(array[i], array[j]);
i++;
j--;
}
}
if(j > 0)
quickSort(array, j);
if(last > i)
quickSort(array + i, last - i);
}
int main()
{
int a[] = {10,9,8,7,6,100,5,4,3,2,1};
quickSort(a, 10);
return 0;
}
После, если заканчивается, я вижу следующие значения в памяти:
{1, 6, 7, 8, 9, 10, 2, 3, 4, 5, 100}
Я не могу понять, что я не сделал правильно. Этот код действительно копирует & пасту из какого-то источника, но моя модификация выводит неверные значения.
Что случилось?
Вы можете использовать IDE, например Visual Studio, и отлаживать свой код, чтобы найти, где проблема логики. –
Компиляция со всеми предупреждениями и информацией об отладке ('g ++ -Wall -Wextra -g'). Используйте отладчик ('gdb'). Узнайте больше о [quicksort] (https://en.wikipedia.org/wiki/Quicksort) –
копия и вставка и модификации ... что вы изменили? Вероятно, он работал в какой-то момент – user463035818