24 int high = nelems - 1;
30 if (high == low + 1) {
31 if (arr[low] > arr[high])
37 int middle = (low + high) / 2;
38 if (arr[middle] > arr[high])
ELEM_SWAP(arr[middle], arr[high]);
39 if (arr[low] > arr[high])
ELEM_SWAP(arr[low], arr[high]);
40 if (arr[middle] > arr[low])
ELEM_SWAP(arr[middle], arr[low]);
49 do ll++;
while (arr[low] > arr[ll]);
50 do hh--;
while (arr[hh] > arr[low]);
79 int high = nelems - 1;
85 if (high == low + 1) {
86 if (arr[low] > arr[high])
92 int middle = (low + high) / 2;
93 if (arr[middle] > arr[high])
ELEM_SWAP(arr[middle], arr[high]);
94 if (arr[low] > arr[high])
ELEM_SWAP(arr[low], arr[high]);
95 if (arr[middle] > arr[low])
ELEM_SWAP(arr[middle], arr[low]);
104 do ll++;
while (arr[low] > arr[ll]);
105 do hh--;
while (arr[hh] > arr[low]);
134 int high = nelems - 1;
140 if (high == low + 1) {
141 if (arr[low] > arr[high])
147 int middle = (low + high) / 2;
148 if (arr[middle] > arr[high])
ELEM_SWAP(arr[middle], arr[high]);
149 if (arr[low] > arr[high])
ELEM_SWAP(arr[low], arr[high]);
150 if (arr[middle] > arr[low])
ELEM_SWAP(arr[middle], arr[low]);
159 do ll++;
while (arr[low] > arr[ll]);
160 do hh--;
while (arr[hh] > arr[low]);