四个二分万能模板汇总(精简版)

编程入门 行业动态 更新时间:2024-10-23 16:19:01

四个二分万能模板汇总(<a href=https://www.elefans.com/category/jswz/34/1747482.html style=精简版)"/>

四个二分万能模板汇总(精简版)

模板来源

b站教程:二分查找为什么总是写错?_哔哩哔哩_bilibili

模板

int l=-1,r=N;
while(l+1!=r)
{int mid=(l+r)/2;if(check)l=mid;else r=mid;
}
return l or r;

四种情况:

1.找到第一个大于x的元素

check:q[mid]<=x

return:r

2.找到第一个大于等于x的元素

check:q[mid]<x

return:r

3.找到最后一个小于x的元素

check:q[mid]<x

return:l

4.找到最后一个小于等于x的元素

check:q[mid]<=x

return:r

演示

“数的范围”:比如一段序列3 4 4 5 5 5 6

5的下标范围为[3,5]

左边界即找:大于等于5的第一个下标

右边界即找:小于等于5的最后一个下标

对应代码分别为:

int l=-1,r=N;
while(l+1!=r)
{int mid=(l+r)/2;if(q[mid]<x)l=mid;else r=mid;
}
return r;int l=-1,r=N;
while(l+1!=r)
{int mid=(l+r)/2;if(q[mid]<=x)l=mid;else r=mid;
}
return l;

更多推荐

四个二分万能模板汇总(精简版)

本文发布于:2023-11-15 15:54:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1602316.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:精简版   模板

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!