问题 A: 二分查找

题目描述

设有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 a[10];
int find (int x)
{
    int left=0,light=9,mid=(left+light)/2;
    while (mid>=left&&mid<=light)
    {
        if (a[mid]==x) return 1;
        else if (a[mid]>x) {light=mid-1;mid=(left+light)/2;}
        else {left=mid+1;mid=(left+light)/2;}
    }
    return 0;
}
int main()
{
    int x;
    for (int i=0;i<10;i++)
        cin>>a[i];cin>>x;
    if (find(x)) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/tiantianac/article/details/79796678