(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 @ 2024-06-25 16:54  wlqtc  阅读(42)  评论(0)    收藏  举报