您的位置:首页 > 其它

二分查找

2016-03-20 16:12 197 查看
描述:

给定一个单调递增的整数序列,问某个整数是否在序列中。
输入:

第一行为一个整数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;
int a[10000];
int main()
{

int n;
cin >> n;
for(int i = 0; i < n; i ++)
cin >> a[i];
int t;
cin >> t;
while(t--)
{
int goal;
cin >> goal;
int begin = 0, end = n-1;
int flag = 0;
while(begin <= end)
{
int mid = (begin+end)/2;
if(a[mid] < goal)
begin = mid+1;
else if(a[mid] > goal)
end = mid-1;
else
{
flag = 1;
break;
}
}
if(flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: