其他分享
首页 > 其他分享> > 二分查找的秘密

二分查找的秘密

作者:互联网

left=0 right=length-1时,当进行left和right移动的时候一定要等于二分点+1或二分点-1 (不然,假设终止条件是left>right,当target=arr[lenth-1]的时候会死循环)

left=0 right=length时, 当进行left和right移动的时候就可以等于二分点

why?

如下情况,当right=left+1时,二分点一定是left,而当target=arr[right]时,进入死循环。所以在进行left移动和right移动的时候一定要注意+-1

而让right=length进行初始化可以有效避免这一个问题。因为在初始状态下,不可能有arr[right]=target,而在非初始状态下到达arr[right(也就是上一步的二分点)]=target的前提条件是在上一步比较中arr[二分点]>target,这显然是自相矛盾的。所以这样初始化可以不用在意在移动left和right时是否对二分点+-1。

arr[left]=target根本无需考虑。因为二分点总能落在left上从而顺利结束循环。

标签:二分,arr,right,target,秘密,length,查找,二分点,left
来源: https://www.cnblogs.com/lymi/p/15631064.html