二分查找
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;
}