29 #pragma GCC visibility push(default)
39 template <
class T,
class LessThan>
45 for (i = 0; i < size-1; i++){
47 for (j = i+1; j < size; j++){
48 if (lt(array[j], array[best_i]))
51 tmp = array[i]; array[i] = array[best_i]; array[best_i] = tmp;
54 template <
class T>
static inline void selectionSort(T* array,
int size) {
57 template <
class T,
class LessThan>
58 void sort(T* array,
int size, LessThan lt)
64 T pivot = array[size / 2];
70 do i++;
while(lt(array[i], pivot));
71 do j--;
while(lt(pivot, array[j]));
75 tmp = array[i]; array[i] = array[j]; array[j] = tmp;
79 sort(&array[i], size-i, lt);
82 template <
class T>
static inline void sort(T* array,
int size) {
90 template <
class T,
class LessThan>
void sort(
vec<T>& v, LessThan lt) {
91 sort(
static_cast<T*
>(v), v.
size(), lt); }
99 #pragma GCC visibility pop