二分之前必须保证序列有序!
情况一:找最小的可行解 找到某个值,比其小的值均不满足题意,比其大的值均满足题意。
int bsearch_1(int l, int r)
{
while (l > 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
return l;
}
情况二:找最大的可行解
找到某个值,比其大的值均不满足题意,比其小的值均满足题意。
int bsearch_2(int l, int r)
{
while (l > 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
return l;
}
这里为了防止死循环,计算mid
时需要+1