3330-顺序表应用6:有序顺序表查询-C语言

3330-顺序表应用6:有序顺序表查询-C语言_第1张图片> 这个程序需要注意时间限制,应用二分查找的方法。

#include 
#include 

typedef struct{
    int data[100010];
    int length;
}List;

void Create(List *L){
    int i;
    for(i=0;ilength;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(ndata[mid]){
            r=mid-1;
        }
        else if(L->data[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;
}

你可能感兴趣的:(3330-顺序表应用6:有序顺序表查询-C语言)