24 #ifndef GRAPHCHI_QSORT_INCLUDED
25 #define GRAPHCHI_QSORT_INCLUDED
30 template <
class E,
class BinPred>
31 void insertionSort(E* A,
int n, BinPred f) {
32 for (
int i=0; i < n; i++) {
35 while (--B >= A && f(v,*B)) *(B+1) = *B;
43 template <
class E,
class BinPred>
44 E median(E a, E b, E c, BinPred f) {
45 return f(a,b) ? (f(b,c) ? b : (f(a,c) ? c : a))
46 : (f(a,c) ? a : (f(b,c) ? c : b));
50 template <
class E,
class BinPred>
51 void quickSort(E* A,
int n, BinPred f) {
52 if (n < ISORT) insertionSort(A, n, f);
60 if (f(*M,p)) std::swap(*M,*(L++));
67 if (f(*M,p)) std::swap(*M,*(L++));
70 quickSort(A, (
int) (L-A), f);
71 quickSort(M, (
int) (A+n-M), f);