查找

题目描述:
  输入数组长度 n  输入数组      a[1...n]  输入查找个数m  输入查找数字b[1...m]    输出 YES or NO  查找有则YES 否则NO 。
 
输入:
  输入有多组数据。 每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。
输出:
  如果在n个数组中输出YES否则输出NO。
样例输入:
  5
  1 5 2 4 3
  3
  2 5 6
 
样例输出:
  YES
  YES
  NO 
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=100;

int main(){
    freopen("input.txt", "r", stdin);
    int n=0;
    while(scanf("%d", &n) != EOF){
        int m=0, ns[maxn];
        for(int i=0; i < n; i++){
            scanf("%d", &ns[i]);
        }
        sort(ns, ns+n);//排序 
        scanf("%d", &m);
        for(int i=0; i < m; i++){
            int search=0;
            int top=n-1, base=0;
            scanf("%d", &search);
            while(top>=base){
                int mid=(top+base)/2;//计算中间点下标
                int tmp=ns[mid];
                if(tmp == search){
                    printf("YES\n");
                    break;
                }else if(tmp > search) top=mid-1;
                else base=mid+1;
            }
            if(top < base) printf("NO\n");
        }
    }
    return 0;
} 

 

posted on 2016-02-19 16:18  笨蛋杜杜鸟  阅读(145)  评论(0)    收藏  举报

导航