二分查找算法的边界,一般来说分两种情况:
一种是左闭右闭区间,类似于[left, right].
int binary_search(int v)
{
int l = 0, r = n;
while (l <= r)
{
int mid = (l+r)>>1;
if (v < mid) r= mid-1;
else if (v > mid) l= mid+1;
else return mid;
}
return -1;
}
一种是左闭右开区间,类似于[left, right).
int binary_search(int v)
{
int l=0,r=n;
while (l < r)
{
int mid = (l + r)>>1;
if (v < mid) r= mid;
else if (v > mid) l= mid+1;
else return mid;
}
return -1;
}