(Day7)算法复健运动for蓝桥杯-二分

(Day7)算法复健运动for蓝桥杯-二分

二分比较简单,这里主要摘一些常用的写法:

1.找到目标数

int l,r,mid;
while(l<=r)
{
  	if(a[mid]==x)return mid;
  	else if(a[mid]<x)l=mid+1;
  	else r=mid-1;
}

2.找范围内的

找小于等于y的第一个数

000000011111

while(l<=r)
{
    mid=(l+r)/2;
    if(a[mid]<=y)//跟用法一样
        l=mid+1;
    else r=mid-1;
}//r

找大于等于x的第一个数

000000111111

while(l<=r)
{
    mid=(l+r)/2;
    if(a[mid]>=x)
        r=mid-1;
    else l=mid+1;
}//l

如果条件没有等于就把等号去掉

posted @   wlqtc  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示