二分查找

来源:互联网 发布:东北经济振兴 知乎 编辑:程序博客网 时间:2024/06/16 03:29

代码:(很快的哟。。。。。)

#include<stdio.h>
#define max 1000000
int A[max];
int bserach(int A[],int x,int y,int t)
{
    while(x<y)
    {
        int m;
        m=x+(y-x)/2;
        if(A[m]==t)
        {
            return m;
        }
        else if(A[m]>t)
        {
            y=m;
        }
        else
        {
            x=m+1;
        }
    }
    return -1;
}
int main()
{
    int m,n;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        int i,j,t,X;
        for(i=0;i<m;i++)
        {
            scanf("%d",&A[i]);
        }
        for(j=0;j<n;j++)
        {
            scanf("%d",&t);
            X=bserach(A,0,m,t);
            printf("%d\n",X);
        }
    }
    return 0;
}

0 0
原创粉丝点击