Быстрая сортировка по возрастанию c++
У меня есть быстрая сортировка по убыванию , какой будет быстрая сортировка по возрастанию из этого кода ? ( перепробовал все , не получается ).
void quickSort1(T* array, long N)
{
long i = 0, j = N - 1;
T temp, p;
p = array[N >> 1];
do {
while (array[i] < p) i++;
while (array[j] > p) j--;
if (i <= j) {
temp = array[i]; array[i] = array[j]; array[j] = temp;
i++; j--;
}
} while (i <= j);
if (j > 0) quickSort1(array, j);
if (N > i) quickSort1(array + i, N - i);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Начнем с исправления вашего алгоритма. Это несложно:
if (j > 0) quickSort1(array, j+1);
Подумайте-ка, почему +1, о чем вы забыли?
После этого получить обратную сортировку совсем легко:
while (array[i] > p) i++;
while (array[j] < p) j--;
Пример работы см. тут.