小染的二分算法

【查位置】

int a[100];
//x为查找目标
 
int search(int l,int r,int x)//查找元素的角标 
{
while(l<=r)
{int m=(l+r)/2;
    if(a[m]==x){while(a[m]==a[m-1]){m--;} return m;}//返回重复元素的第一个 
    else if(a[m]>x){r=m-1;}                         //改为m++则返回重复元素的最后一个 
    else if(a[m]<x){l=m+1;}
}
 return -1;//找不到 
}

【查左最接近目标数的数】(左是升序)

ll zuo_search(ll l,ll r,ll x)///【左接近】 
{   ll t=r;//复刻右边界 
    while(l<=r){
        ll m=(l+r)/2;   
        if((m==t&&a[m]<x)||(a[m+1]>=x&&a[m]<x)) return a[m];
	    else if(a[m]>=x) r=m-1;
        else l=m+1;
    }
    return S;//查不到用负无穷破坏它
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.染

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值