/*Function to implement the combsort*/ void combsort(int a[], int aSize) { int gap = aSize; int temp, i; for (;;) { gap = newgap(gap); int swapped = 0; for (i = 0; i < aSize - gap; i++) { int j = i + gap; if (a[i] > a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; swapped = 1; } } if (gap == 1 && !swapped) break; } }
void qsort(void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *)) { size_t gap = nmemb; size_t i, j; char *p1, *p2; int swapped; if (!nmemb) return; do { gap = newgap(gap); swapped = 0; for (i = 0, p1 = base; i < nmemb - gap; i++, p1 += size) { j = i + gap; if (compar(p1, p2 = (char *)base + j * size) > 0) { memswap(p1, p2, size); swapped = 1; } } } while (gap > 1 || swapped); }