算法练习-NOJ-1001-二分查找

来源:互联网 发布:广州哪里学化妆知乎 编辑:程序博客网 时间:2024/05/21 16:00

时限: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");    }}
0 0
原创粉丝点击