二分搜索1

1.考察要点

1.二分搜索不仅在有序序列中可以运用,无序序列也同样适用,只要满足每次查找都会缩小一半查找范围。

2.注意循环初始条件,边界值,划分点的处理,确保循环不会无法终止。

3.划分点的经典写法:(p+r)/2 ,安全写法:r-(r-p)/2或p+(r-p)/2

2.局部最小值问题

  局部最小值:在一个无序序列中,且任意两个相邻元素都不相等的情况下,满足arr[i]<arr[i+1]且arr[i]<arr[i-1]的元素arr[i]称为局部最小值。

  查找方法:

    1.arr为空或长度为1时返回。

    2.判断两端点的情况

      如果端点值中有一个端点是局部最小值,则立即返回。

    3.端点两边都不是局部最小,如下,讨论中间点mid。

      

    4.中间点的情况

      1.当属于情况2时,直接返回mid.

      2.否则,如3的两边,4的左边,比存在局部最小值,因为相邻元素不同,以4的左边为例,

      在mid的左边,一旦出现上升点,则此点局部最小,否则若一直向左降序,则arr[1]为局部最小值。

      3.未画出的情况5参考情况4。

      

  

猜你喜欢

转载自www.cnblogs.com/lshao/p/8970563.html
今日推荐