代码:
#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));
}
}
分析:
利用平均数,如果小于平均数,就从前半部分查找,否则后半部分,直到找到这个数;