二分模板一共有两个,分别适用于不同情况。
算法思路:
[1,r]中,每次将区间长度缩小一半,当l=r时,我们就找到了目标值当我们将区间[1,r]划分成[1,mid]和[mid+1,r]时,其更新操作是r = mid或者1 = mid + 1, 计算mid时不需要加1。
int bsearch_1(int l ,int r)
{
while(l当我们将区间[1,r]划分成[1,mid-1]和[mid,r]时,其更新操作是r = mid-1或者1 = mid, 计算mid时需要加1。
int bsearch_2(int l ,int r)
{
while(l