二分搜索法

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

前提是:有序数组

步骤

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

猜你喜欢

转载自www.cnblogs.com/o728/p/8979503.html
今日推荐