二分查找
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最小的數(shù):";
?? ?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最大的數(shù):";
?? ?if(r==0) cout<<"-1";
?? ?else cout<<a[l];
?? ?return 0;
?}?
標(biāo)簽: