1. 程式人生 > >3330-順序表應用6:有序順序表查詢-C語言

3330-順序表應用6:有序順序表查詢-C語言

這裡寫圖片描述> 這個程式需要注意時間限制,應用二分查詢的方法。

#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; }