算法练习-NOJ-1001-二分查找
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
给定一个单调递增的整数序列,问某个整数是否在序列中。
输入
第一行为一个整数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
int binarySearch(int x, int num[], int begin, int end) {
int mid;
while (begin <= end) {
mid = (begin + end + 1) / 2;
if (x == num[mid])
return mid;
else if (x > num[mid])
begin = mid + 1;
else
end = mid - 1;
}
return -1;
}
void main()
{
int i,n, m;
int num[10000],temp[50000];
scanf("%d",&n);
for (i = 0; i < n; i++) {
scanf("%d",&num[i]);
}
scanf("%d\n",&m);
for (i = 0; i < m; i++) {
scanf("%d",&temp[i]);
}
for (i = 0; i < m; i++){
if (binarySearch(temp[i], num, 0, n - 1) != -1)
printf("Yes\n");
else
printf("No\n");
}
}