二分搜索法

二分搜索法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法运算终止。

前提是:有序数组

步骤

给予一个包含n个带值元素的数组A或是记录A0...An−1,使得A0≤ ... ≤An−1,以及目标值T,还有下列用来搜索TA中位置的子程序
  1. L为0,Rn− 1。
  2. 如果L>R,则搜索以失败告终。
  3. m(中间值元素)为“(L+R) / 2”加上下高斯符号。
  4. 如果Am<T,令Lm+ 1并回到步骤二。
  5. 如果Am>T,令Rm- 1并回到步骤二。
  6. 当Am=T,搜索结束;回传值m
这个迭代步骤会持续通过两个变量追踪搜索的边界。有些实际应用会在算法的最后放入相等比较,让比较循环更快,但平均而言会多一层迭代。
 
posted @ 2018-05-02 11:46  weizihao  阅读(234)  评论(0编辑  收藏  举报