Если внутренний цикл быстрой сортировки записан эквивалентно этому:
while(x[i] < pivot) i++; // less-than
while(pivot < x[j]) j--; // less-than
, тогда вы можете обойтись только с реализацией <
.
В любом случае, придерживайтесь принципа наименьшего удивления , делая более очевидным, что должен делать вызывающий объект - если указатель функции сравнения называется compare
и функцияне должен вести себя как обычный stdlib qsort
сравнить делегат, тогда это плохая идея.
С другой стороны, если ваш параметр назван как-то вроде less_than
или isLessThan
, для вызывающей стороны должно быть гораздо более очевидно, что ожидается от функции сравнения:
void sort(
const void * arr,
size_t num_items,
size_t element_size,
bool (*is_less_than)(const void*, const void*)
);