二分的写法很多,十分容易混淆,因此在此写下最常用的两种二分写法。
第一种写法:
int bsearch_1(int l, int r)
{
while (l < r)
{
int mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
return l;
}
第二种写法:
int bsearch_2(int l, int r)
{
l--,r++;
while (l+1 < r)
{
int mid = l + r >> 1;
if (check(mid)) l = mid;
else r = mid ;
}
return l;
}