描述:
给定一个单调递增的整数序列,问某个整数是否在序列中。
输入:
第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。
输出:
每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。
输入样例:
5
1 3 4 7 11
3
3
6
9
输出样例:
Yes
No
No
#include<iostream>
using namespace std;
#define MAX 10000
int n;
int a[10000]={0};
void midsearch(int a[],int s,int t,int k)
{
if(s>t)
{
cout<<"No"<<endl;
return;
}
int mid=(s+t)/2;
if(k==a[mid])
cout<<"Yes"<<endl;
else if(k<a[mid])
midsearch(a,0,mid-1,k);
else if(k>a[mid])
midsearch(a,mid+1,t,k);
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int m;
cin>>m;
for(int j=0;j<m;j++)
{
int k;
cin>>k;
midsearch(a,0,n-1,k);
}
return 0;
}
运行结果: