二分搜索法

Posted o728

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分搜索法相关的知识,希望对你有一定的参考价值。

二分搜索法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用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
这个迭代步骤会持续通过两个变量追踪搜索的边界。有些实际应用会在算法的最后放入相等比较,让比较循环更快,但平均而言会多一层迭代。
 技术分享图片

以上是关于二分搜索法的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Binary Search Summary 二分搜索法小结

二分搜索法

JAVA 二分搜索法

二叉树搜索(二分查找法)

分治法-二分搜索

c_cpp 【分治法】二分搜索技术【2.3】