欢迎光临散文网 会员登陆 & 注册

二分查找

2023-07-09 17:16 作者:SpiderMonkeyLing  | 我要投稿

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[1010];
int main()
{
    int n,x;
    cin>>n>>x;
    for(int i=1;i<=n;++i) cin>>a[i];
    for(int i=1;i<n;++i) {
        int k=i;
        for(int j=i+1;j<=n;++j)
        if(a[k]>a[j]) k=j;
        if(k!=i) {
            int t=a[i]; a[i]=a[k]; a[k]=t;
        }
    }
    int l=1,r=n+1,mid;
    while(l<r) {
        mid=(l+r)>>1;
        if(a[mid]>=x) r=mid;
        else l=mid+1;
    }
    cout<<">=x最小的数:";
    if(l==(n+1)) printf("-1\n");
    else printf("%d\n",a[l]);
    l=0; r=n;
    while(l<r) {
        mid=(l+r+1)>>1;
        if(a[mid]<=x) l=mid;
        else r=mid-1;
    }
    cout<<"<=x最大的数:";
    if(r==0) cout<<"-1";
    else cout<<a[l];
    return 0;
 } 

二分查找的评论 (共 条)

分享到微博请遵守国家法律