算法设计与分析 二分查找

来源:互联网 发布:怎么判断两个矩阵相似 编辑:程序博客网 时间:2024/05/16 05:57


时限:1000ms 内存限制:10000K 总时限:3000ms

描述:

给定一个单调递增的整数序列,问某个整数是否在序列中。

输入:

第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。

输出:

每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。

输入样例:

51 3 4 7 113369

输出样例:

YesNoNo

程序:

#include<iostream.h>
int  binSearch(const int  *Array,int  start,int end1,int  key)
{
    int left,right;
    int mid;
    left=start;//开始位置
    right=end1;//结束位置

    while(left<=right)
    {
        mid=(left+right)/2;
        if(key==Array[mid])
        {
            return mid;
        }
        else if(key<Array[mid])
        {
            right=mid-1;
        }
        else if(key>Array[mid])
        {
            left=mid+1;
        }
    }
    return -1;
}
int main()
{
    int a[10000];
    int q[50000];
    int n;
    int m;
    int t;
    cin>>n;
    for(t=0; t<n; t++)
    {
        cin>>a[t];
    }
    cin>>m;
    for(t=0;t<m;t++)
    {

        cin>>q[t];
    }
    for(t=0;t<m;t++)
    {

        if(binSearch(a,0,n-1,q[t])>=0)
        {

            cout<<"Yes"<<endl;

        }
        else{
            cout<<"No"<<endl;
        }
    }
}

0 0