递推递归练习 P

来源:互联网 发布:美食拍照软件 编辑:程序博客网 时间:2024/06/06 20:25

代码:

#include<bits/stdc++.h>
int a[3000006];
int Binsearch(int a[],int l, int r, int key)
{
    int low=l, high=r, mid;
    if(l <= r)
    {
        mid = low +(high - low)/2;
        if(a[mid]== key) return mid;
        if(a[mid]> key)
              return Binsearch(a, low, mid-1, key);
        if(a[mid]< key)
              return Binsearch(a, mid+1, high, key);

    }
    return -1;
}

int main()
{
    int n, q, i, j, key;
    scanf("%d",&n);
    for(i=1; i<=n; i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&q);
    for(j=0; j<q; j++)
    {
        scanf("%d",&key);
        printf("%d\n",Binsearch(a,1, n, key));
    }

}

分析:

利用平均数,如果小于平均数,就从前半部分查找,否则后半部分,直到找到这个数;


0 0