二分查找(摘自C traps and Pitfalls)

int * bsearch(int *t, int n, int x) {
int *lo = t;
int *hi = t + n;
while(lo < hi) {
int *mid = lo +((hi - lo)>>1);
if(x < *mid) {
hi = mid;
} else if(x > *mid){
lo = mid + 1;
} else {
return mid;
}
}
return NULL;
}

程序

1.考虑指针代替数组,节省运算开销(寻址方面);

2.两个指针相加问题的避免;

3.不对称思想的运用。

你可能感兴趣的:(二分查找)