//二分的简单实现
int l,r;//定义二分的左右边界
while(l<r) //当l>=r时二分结束
{
int mid=l+r>>1;//或者l+r+1>>1
if() l=mid+1;
else r=mid;
/*
或者
if() r=mid-1;
else l=mid;
*/
}
一个mid = (l+r)>>1
一个mid = (l+r+1)>>1
加不加1 完全取决于 l = mid 还是r = mid
l等于mid时必须+1向上取整 不然会陷入l=l的死循环
r = mid 时候不用加1 因为下一步l = r 直接会退出循环