二分查找的循环条件为什么是left小于等于right,而不是left小于right

我的疑问是为什么不能是简单的小于,而要加个等于,我们来考虑一下下面这种情况:我们判断整数1是否位于数组a[2]={0,1}里面,如果循环条件是left<right,那么

第一次查找:left=0,right=1,mid=0,a[mid]<0,left=mid+1=1,此时left==right,跳出循环,查找失败,而这个结果和实际情况是不一致的,所以循环条件不能是left<right

总之就是,如果是left<right,那就会漏掉所要查找的元素恰好就位于left或者right上的这两种边界情况

猜你喜欢

转载自blog.csdn.net/yuanren201/article/details/105336591