Я пытаюсь выяснить, как реализовать быстрый сортировку без необходимости создавать дополнительные массивы. Тем не менее, эта реализация работает только тогда, когда я использую 1 в качестве опоры. Программа seg неисправностей, когда я использую любой другой номер. Я не могу понять, какая переменная выходит за пределы, чтобы вызвать бесконечный цикл. Я был бы очень признателен за любую критику/помощь в этой функции.Реализация Quicksort в C без использования нескольких массивов
void quick_sort(Item a[], int max, int pivot)
{
int i, j, p, t;
printf("%d", pivot);
if (max < 2)
{
return;
}
p = a[pivot];
printf("%d", p);
for (i = 0, j = max-1;; i++, j--)
{
while (a[i] < p)
{
i++;
}
while (p < a[j])
{
j--;
}
if (i >= j)
{
break;
}
t = a[i];
a[i] = a[j];
a[j] = t;
}
quick_sort(a, i, pivot);
quick_sort(a+i, max-i, pivot);
}
используйте случайную функцию, чтобы выбрать опорную точку из доступных номеров на каждом этапе сортировки. пойти проверить псевдокод wikipedia – softwarenewbie7331