Как отсортировать в обратном порядке?
есть функция, которая принимает массив и кол-во элементов в нем и сортирует его.
Я хочу добавить флаг, который будет указывать в каком порядке сортировать, как мне реализовать в коде смену знака с ">" на "<" с помощью флага 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])) {