vlambda博客
学习文章列表

算法练习-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


#include <stdio.h>

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"); }
}