noj算法题——二分查找

来源:互联网 发布:java set contains 编辑:程序博客网 时间:2024/05/23 15:47
二分查找
描述:
给定一个单调递增的整数序列,问某个整数是否在序列中
输入:
第一行为一个整数n,表示序列中整数的个数;第二行为一个整数m(m不超过50000),表示要查询的个数;接下来m行每行一个整数k。
输出:
每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No
输入样例:
5
1 3 4 7 11
3
3
6
9
输出样例
Yes
No
No

C语言代码:
#include <stdio.h>#include <stdlib.h>#define MaxSize 10005void BinarySearch(int m);int a[MaxSize];int b[MaxSize];int n;void BinarySearch(int m){int left=0;int right=n-1;while(left<=right){        int middle=(left+right)/2;        if(a[middle]==m){            printf("Yes\n");            return 0;        }        else if(a[middle]>m){            right=middle-1;            }        else            left=middle+1;        }        printf("No\n");        return 0;}int main(){scanf("%d",&n);int i,num,j,k;for(i=0;i<n;i++){scanf("%d",&num);a[i]=num;}scanf("%d",&j);for(k=0;k<j;k++){int m;scanf("%d",&m);b[k]=m;}for(k=0;k<j;k++){        BinarySearch(b[k]);}return 0;}


0 0