【查找】二分查找法
先给数据排序(例如按升序排好),形成有序表。
然后再将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) 编辑 收藏 举报