Как отсортировать в обратном порядке?

есть функция, которая принимает массив и кол-во элементов в нем и сортирует его.

Я хочу добавить флаг, который будет указывать в каком порядке сортировать, как мне реализовать в коде смену знака с ">" на "<" с помощью флага revers ?

void sort(const int* p_top, int a[], int revers) {
    /* Sorting elements in array with inserting sort algorithm */
    for(int i = 1; i < *p_top; ++i) {
        int k = i;
        while (k > 0 && a[k-1] > a[k]) {
            int tmp = a[k-1];
            a[k-1] = a[k];
            a[k] = tmp;
            k -= 1;
        }
    }
}

что бы сортировать в обратном порядке достаточно поменять операнд сравнения в этой строке:

while (k > 0 && a[k-1] > a[k])

Как это сделать без излишнего копирования кода?


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

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

Например, с помощью тернарного оператора:

... && (revers ? a[k-1] < a[k] : a[k-1] > a[k])) {
→ Ссылка