
72
|
第
4
章
*
比较函数
cmp
用于对元素进行合理的比较
*/
void do_qsort (void **ar, int(*cmp)(const void *, const void *),
int left, int right) {
int pivotIndex;
if (right <= left) { return; }
/*
切分。
*/
pivotIndex = selectPivotIndex (ar, left, right);
pivotIndex = partition (ar, cmp, left, right, pivotIndex);
if (pivotIndex-1-left <= minSize) {
insertion (ar, cmp, left, pivotIndex-1);
} else {
do_qsort (ar, cmp, left, pivotIndex-1);
}
if (right-pivotIndex-1 <= minSize) {
insertion (ar, cmp, pivotIndex+1, right);
} else {
do_qsort (ar, cmp, pivotIndex+1, right);
}
}
/**
直接快速排序
*/
void sortPointers (void **vals, int total_elems,