> 这个程序需要注意时间限制,应用二分查找的方法。
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int data[100010];
int length;
}List;
void Create(List *L){
int i;
for(i=0;i<L->length;i++){
scanf("%d",&L->data[i]);
}
}
int search(List *L,int n,int l,int r){
while(l<=r){
int mid=(l+r)/2;
if(n<L->data[mid]){
r=mid-1;
}
else if(L->data[mid]<n){
l=mid+1;
}
else return mid+1;
}
return 0;
}
int main()
{
List *L;
L=(List *)malloc(sizeof(List));
scanf("%d",&L->length);
Create(L);
int m,n,p;
scanf("%d",&m);
while(m--){
scanf("%d",&n);
p=search(L,n,0,L->length-1);
if(p)printf("%d\n",p);
else printf("No Found!\n");
}
return 0;
}