【查找】二分查找法

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

然后再将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 }
原文地址:https://www.cnblogs.com/4everlove/p/3389932.html