4 * Ullrich von Bassewitz, 09.12.1998
13 static void QuickSort (void* Base, int Lo, int Hi, size_t Size,
14 int (*Compare)(const void*, const void*))
15 /* Internal recursive function. Works with ints, but this shouldn't be
21 /* Get a char pointer */
22 unsigned char* B = Base;
29 while (I <= J && Compare (B + Lo, B + I) >= 0) {
32 while (I <= J && Compare (B + Lo, B + J) < 0) {
36 _swap (B + I, B + J, Size);
42 _swap (B + J, B + Lo, Size);
44 if (((unsigned) J) * 2 > (Hi + Lo)) {
45 QuickSort (Base, J + Size, Hi, Size, Compare);
48 QuickSort (Base, Lo, J - Size, Size, Compare);
56 void qsort (void* base, size_t nmemb, size_t size,
57 int (*compare)(const void*, const void*))
58 /* Quicksort implementation */
61 QuickSort (base, 0, (nmemb-1) * size, size, compare);