3330-順序表應用6:有序順序表查詢-C語言
阿新 • • 發佈:2018-12-10
> 這個程式需要注意時間限制,應用二分查詢的方法。
#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;
}