二分查找(摘自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.不对称思想的运用。

posted @ 2011-12-29 22:18  yanghuahui  阅读(163)  评论(0编辑  收藏  举报