12 #define ELEM_SWAP(a,b) { unsigned char t=(a);(a)=(b);(b)=t; }
18 int high = nelems - 1;
24 if (high == low + 1) {
25 if (arr[low] > arr[high])
31 int middle = (low + high) / 2;
32 if (arr[middle] > arr[high])
ELEM_SWAP(arr[middle], arr[high]);
33 if (arr[low] > arr[high])
ELEM_SWAP(arr[low], arr[high]);
34 if (arr[middle] > arr[low])
ELEM_SWAP(arr[middle], arr[low]);
43 do ll++;
while (arr[low] > arr[ll]);
44 do hh--;
while (arr[hh] > arr[low]);
71 #define ELEM_SWAP(a,b) { unsigned short t=(a);(a)=(b);(b)=t; }
77 int high = nelems - 1;
83 if (high == low + 1) {
84 if (arr[low] > arr[high])
90 int middle = (low + high) / 2;
91 if (arr[middle] > arr[high])
ELEM_SWAP(arr[middle], arr[high]);
92 if (arr[low] > arr[high])
ELEM_SWAP(arr[low], arr[high]);
93 if (arr[middle] > arr[low])
ELEM_SWAP(arr[middle], arr[low]);
102 do ll++;
while (arr[low] > arr[ll]);
103 do hh--;
while (arr[hh] > arr[low]);
130 #define ELEM_SWAP(a,b) { float t=(a);(a)=(b);(b)=t; }
136 int high = nelems - 1;
142 if (high == low + 1) {
143 if (arr[low] > arr[high])
149 int middle = (low + high) / 2;
150 if (arr[middle] > arr[high])
ELEM_SWAP(arr[middle], arr[high]);
151 if (arr[low] > arr[high])
ELEM_SWAP(arr[low], arr[high]);
152 if (arr[middle] > arr[low])
ELEM_SWAP(arr[middle], arr[low]);
161 do ll++;
while (arr[low] > arr[ll]);
162 do hh--;
while (arr[hh] > arr[low]);