侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

二分查找

Hope
2022-02-06 / 0 评论 / 0 点赞 / 405 阅读 / 353 字
温馨提示:
本文最后更新于 2022-02-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

二分查找有固定的模板,在不同的情况下有两种,只需要记住模板之后直接套用即可。
二分一般都是在有序的情况下,但是有些情况下使不需要有序的,我们只需要满足check(mid),即某种性质即可。
模板1:

//定义好范围
int l,r;
while(l<r){
	int mid=l + r + 1 >> 1;
	if(check(mid)) l=mid;//如果这里是l=mid,上面的mid就需要+1
	else r=mid+1;
}
//我们最后取l或者r都是一样的,但是为了保险一般都取r,因为有的时候取l是不对的。

模板2

int l,r;
while(l<r){
	int mid=l+r>>1;
	if(check(mid)) r=mid;//因为这里是r=mid,所以不需要+1
	else l=mid-1;
}

二分练习
练习参考答案

0

评论区