当前位置:   article > 正文

基础搜索算法篇---二分搜索_二分法查找次数怎么算

二分法查找次数怎么算

                用于在有序数组中查找的算法,优势是能降低时间复杂度。 

时间复杂度的讨论:

                线性搜索在最坏的情况要比较n次,而二分搜索大概需要log2N次。由于二分搜索,每进行一次比较,搜索范围就会减半,所以降低了复杂度,二分搜索的复杂度为logN。

(大部分教材log2N都直接表示为 logN)

        元素n n=100 线性搜索 100次 二分搜索 7次

                  n=10000 线性搜索 10000次 二分搜索 14次    2^14 大致等于 10000

                二分搜索只能使用在有序的数组(因为会根据当前数据元素的中间值来逐渐确定目标元素的位置)。

步骤为:1.先与中间值比较,如果相等就退出。

2.如果不符合就判读大于还是小于中间值然后缩短搜索范围。

 (数组为升序,如果target大于middle这个中间值,我们就把下次搜索范围缩短到

[middle+1,right]

 此时的left = middle+1 (关于left = middle+1 和 middle =(left + right +1)/2 涉及到该二分查找

否会死循环和是向下取整还是向上取整)

middle = (right + left)/2 (更新当前中间元素的值)

3.重复执行以上步骤,直到 left>right  或者 找到了目标值。

关于死循环:

例如 left = 3 ,right =4 如果 middle = (left + right )/2

left=middle 就会进入死循环,原因是(3+4)/2 =3 

left > right 的情况是没有找到目标值

是已经把数组搜索范围划分到最小的情况(即left,middle,right它们的下标是相邻的三个),再执行

right = middle     

middle = (left + right)/2

middle = left

 仍然没有找到的话就会让 left > right,然后结束查找。

代码如下:

运行:

初始化以及调用

 结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/624514
推荐阅读
相关标签
  

闽ICP备14008679号