1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int a[3000000]; 5 int find(int q,int left,int right) 6 { 7 int x,y; 8 x=left; 9 y=right; 10 int mid; 11 mid=(x+y)/2; 12 if(q==a[mid]) 13 { 14 return mid; 15 } 16 if(x>=y)return -1;//和之前的的二分查找一样,但是某些条件及范围不一样,注意题目要求即可。 17 if(q<a[mid])return find(q,x,mid-1); 18 else return find(q,mid+1,y); 19 20 } 21 int main() 22 { 23 int n,m; 24 scanf("%d",&n); 25 int i; 26 for(i=0; i<n; i++) 27 { 28 scanf("%d",&a[i]); 29 } 30 int b; 31 scanf("%d",&m); 32 for(i=0; i<m; i++) 33 { 34 scanf("%d",&b); 35 if(find(b,0,n-1)!=-1) 36 printf("%d ",find(b,0,n-1)+1); 37 else printf("-1 "); 38 } 39 return 0; 40 }