二分搜索总结1,在if中写下想要找到的逻辑的相反,保证if的逻辑简单
2、while (左右),left==right,区间分为两部分; (注意:只有一个与元素的情况分开写)
3、将mid置于左半部right=mid left=mid 1时,mid为intmid=left(right-left )/2; 将mid放置在右半部的left=mid right=mid - 1上,则mid为intmid=left(right-left )/2;
4、mid取值
(1) int mid=(左右)/2; 如果左灯光和右灯光较大,则左灯光会发生整数溢出,为负数;
)2) int mid=left (右左)/2; 如果right大、left小,负数,则right - left也可能超过int类型可以表现的最大值,但通常left和right表示数组索引值,left不是负,因此right - left溢出
(3) intmid=) lowhigh ) 1; 在Java中,这样取中央值;
5、区间一定存在目标的情况下,结束while(leftright )后,可以返回left或left代表的值,否则返回if(nums(left ) target ) return left;