[板子]二分查找模板

查找数据左端点:

l=0, r=n-1;
// left
while (l<r)
{
	int mid = (l+r)>>1;
	if (a[mid]>=k) r=mid;
	else l=mid+1;
}

查找数据右端点:

l = 0, r=n-1;
// right
while (l<r)
{
	int mid = (l+r+1)>>1;
	if (a[mid]<=k) l = mid;
	else r = mid-1;
}

查找浮点数:

double l=-10e6, r=10e6;
while (r-l>eps)
{
	double mid = (l+r)/2;
	if (mid*mid*mid > n) r=mid;
	else l=mid;
}
posted @ 2022-04-18 14:36  Akiho  阅读(20)  评论(0)    收藏  举报