Быстрая сортировка по убыванию на С

Имею цель преобразовать исходный код быстрой сортировки по возрастанию, в точно такой же, но по убыванию. Не совсем понимаю, как этот код работает (Получил на лекции)

int split(int a[], int low, int high)
{
    int part_element = a[low];

    for (;;)
    {

        while (low < high && part_element <= a[high])
            high--;
        if (low >= high)
            break;
        a[low++] = a[high];

        while (low < high && a[low] <= part_element)
            low++;
        if (low >= high) break;
        a[high--] = a[low];
    }

    a[high] = part_element;

    return high;
}

void QuickSort(int a[], int low, int high)
{
    int middle;
    if (low >= high) return;
    middle = split(a, low, high);
    QuickSort(a, low, middle - 1);
    QuickSort(a, middle + 1, high);
} 

Ответы (1 шт):

Автор решения: Harry

Как работает - просто рекурсивно делит каждый массив так, что после слева до некоторого элемента оказываются все элементы, меньшие его, а справа - большее. И так до массивов из 1 элемента.

А поменять саму сортировку просто - заменить два сравнения опорного элемента на обратные:

part_element <= a[high]
a[low] <= part_element

на

part_element >= a[high]
a[low] >= part_element
→ Ссылка