int qsearch(void** array, size_t nr, void* data, DataCompareFunc cmp) { int low = 0; int mid = 0; int high = nr-1; int result = 0; return_val_if_fail(array != NULL && cmp != NULL, -1); while(low <= high) { mid = low + ((high - low) >> 1); result = cmp(array[mid], data); if(result == 0) { return mid; } else if(result < 0) { low = mid + 1; } else { high = mid - 1; } } return<br> 1.要注意边界值的处理!! 2.防止运算溢出,和浮点运算。 3.指针的使用