二分本质是边界
找到x的下标
l 左边能取到的下标
r 右边能取到的下标
用while(l<r)
1.想清性质,写出判断
2.画图 判断true false
适用于升序
有其他方法时,不要使用二分
while (l < r)//起始位置
{
int mid = l + r >> 1;
if (q[mid] **>=** x) r = mid;
else l = mid + 1;
}
while (l < r)//终止位置
{
int mid = l + r + 1 >> 1;
if (q[mid] **<=** x) l = mid;
else r = mid - 1;
}
返回的l或者r就是所求下标
求该值是否存在区间时,直接用得到的下标 判断是否相等。
判断和边界息息相关