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