Я попытался реализовать quicksort, используя псевдокод из книги (выглядит так, как из Википедии), но я не могу заставить его работать.Quicksort не работает хорошо
Этот исходный код:
int partitionare(int a[], int n, int p, int r)
{
int x, i, j, aux;
x = a[r]; // pivot
i = p - 1;
for (j = p; j < r; j++)
{
if (a[j] <= x)
{
i++;
aux = a[j];
a[j] = a[i];
a[i] = aux;
}
}
aux = a[i + 1];
a[i + 1] = a[r];
a[r] = aux;
return i + 1;
}
void quicksort(int a[], int n, int p, int r)
{
if (p < r)
{
int q = partitionare(a, n, p, r);
partitionare(a, n, p, q - 1);
partitionare(a, n, q + 1, r);
}
}
где р и г самого начало и конец массива
И вызов функции:
quicksort(a, n, 0, n-1);
Не против того, что второй аргумент, n. Это только для целей тестирования.
Что вы имеете в виду, не работает? Какие результаты вы видите для своего тестового ввода? –
Упс, извините, я забыл упомянуть. Вход: 2, 8, 7, 1, 3, 5, 6, 4 Выход: 2, 1, 3, 4, 7, 5, 6, 8 – Altair2033