分治——二分查找

问题 A: 二分查找

时间限制: 1 Sec  内存限制:128 MB

题目描述

设有N个数已经按从大到小的顺序排列,现在输入X,判断它是否在这N个数中,如果存在则输出:“YES” 否则输出“NO”。 

输入

第一行输入十个数

第二行输入你要找的数

输出

找到输出YES

找不到输出NO

样例输入

1 2 3 4 5 6 7 8 9 10
3

样例输出

YES

提示

#include<iostream>
using namespace std;
int main()
{
    int a[10],x;
    for(int i=0;i<10;i++)
        cin>>a[i];
    cin>>x;
    int left=0,right=9,mid;
    while(left<=right)
    {
     mid=(left+right)/2;
     if(a[mid]>x)right=mid-1;
     if(a[mid]<=x)left=mid+1;
    }
    if(a[right]==x)cout<<"YES"<<endl;
     else cout<<"NO"<<endl;
    return 0;
}



猜你喜欢

转载自blog.csdn.net/qq_40729773/article/details/79720033
今日推荐