二分查找是一种查找方式,用于在已经排好序的数组中寻找某个特定的数
我们直接来介绍二分查找的查找方法
左边界与右边界
左闭右闭:
n为数组元素个数,a为目标数字
我们以左闭右闭区间为例,left为左边界0,right为右边界n-1,范围为:[0,n-1];
之后我们的左右边界left,right必须始终满足左闭右闭。
因为是左闭右闭,所以是可以满足left==right的,因此while循环加上'='。
mid为中间值:(left+right)/2。
当数组中下标为mid的元素值大于目标值时
right=mid-1。因为mid已经比较过了,为了满足闭合,右边界必须为mid-1。
同理
当mid元素值小于目标值时
left=mid+1。同样因为mid已经比较过了,为满足左边界闭合,left必须为mid+1。
当mid元素值等于目标值时,返回下标。
以上为我们的函数实例。
左闭右开
左闭右开,左边界为0,右边界为n
left不能等于right,所以没有'='
mid大于目标值时
由于右开,mid位刚好比较过,那么right修改为mid
mid小于目标值时
由于左闭,mid位比较过,那么left修改为mid+1
以上为函数示例