二分查找条件为什么是 left <= right ,而不是 left < right

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

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

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

posted @ 2022-10-23 23:46  hh9515  阅读(55)  评论(0)    收藏  举报