问题 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;
}