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

猜你喜欢

转载自blog.csdn.net/qq_43191910/article/details/82728882