二分查找,二分上界,二分下界

来源:互联网 发布:诚造社变形金刚淘宝 编辑:程序博客网 时间:2024/05/21 21:35
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;const int masn=1e6+10;int x[masn],y[masn];//区间左闭右开,从0或1开始都可以int binary_sorce(int t,int l,int r) {    int mid;    while(l<r) {        mid=(l+r)>>1;        if(x[mid]>=t) r=mid;        else l=mid+1;    }    return x[l]==t?l:-1;}int lower_binary(int t,int l,int r) {    int mid;    while(l<r) {        mid=(l+r)>>1;        if(x[mid]>=t) r=mid;        else l=mid+1;    }    return l;}int upper_binary(int t,int l,int r) {    int mid;    while(l<r) {        mid=(l+r)>>1;        if(t>=x[mid]) l=mid+1;        else r=mid;    }    return l;}int main() {    int num,n;    while(~scanf("%d",&num)) {        for(int i=0; i<num; i++)            scanf("%d",&x[i]);        sort(x,x+num);        while(~scanf("%d",&n)) {            printf("上界:%d\n",upper_binary(n,0,num));            printf("下界:%d\n",lower_binary(n,0,num));            printf("是否存在:%d\n",binary_sorce(n,0,num));        }    }    return 0;}

0 0
原创粉丝点击