【查找】二分查找法

先给数据排序(例如按升序排好),形成有序表。

然后再将key与正中元素相比,若key小,则缩小至右半部内查找;

再取其中值比较,每次缩小1/2的范围,直到查找成功或失败为止。

 

问题:若关键字不在表中,怎样得知并及时停止查找?

典型标志是:当查找范围的上界≤下界时停止查找。

 

二分查找的时间效率是logN。

 

 1 int search_bin(char *t,char k)
 2 {
 3     int low=1,high=10,mid;
 4     while (low<=high)
 5     {
 6         mid=(low+high)/2;
 7         if (k==t[mid]) return mid;
 8         else if (k<t[mid]) high=mid-1;
 9              else low=mid+1;
10     }
11     return 0;
12 }

 

posted on 2013-10-26 20:09  Allen Blue  阅读(162)  评论(0编辑  收藏  举报

导航