二分查找板子(C++)

 区间[l, r]被划分为[l,mid]和[mid+1,r]时使用 寻找左端点时用

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;
} 

 区间[l, r]被划分为[l,mid-1]和[mid,r]时使用 寻找右端点时用

int bsearch_2(int l, int r)
{
	while(l < r)
	{
		int mid = l + r + 1 >> 1;
		if(check(mid)) l=mid;
		else r = mid - 1;
	}
	return l;
} 

你可能感兴趣的:(第一讲,基础算法,c++,算法,数据结构)