二分查找

算法原理

    每次查找数组的中间值与目标值做对比

    找不到就将数组折半后重复上一步

示例数组

在有序数组中查找指定项

在有序数组中找>=number的最左位置

在任意两个相邻数不相等的无序数组中找到一个局部最小值

    局部最小的定义

        在数组[0,2]上,由于0<2,故局部最小为0

        在数组[0,2,.....8,1,5,......7,8],由于1<8且1<5,故1为局部最小

        在数组[1,......,8,6],由于8>6,故局部最小为6

    示例数组

    题解

        由于只需要找出其中一个即可,故我们可以先判断边界情况是否如何::在0和1的位置是否符合 :最后两位是否符合 :每次找到的中点是否满足

        如果首尾不满足,则在0到1(n-1到n-2)处一定是下降,既然必存在局部最小,则一定存在一个凹陷点符合;那么在这个范围内,一定最少有3个元素,故循环的结束条件应该为l

你可能感兴趣的:(二分查找)