折半查找

来源:互联网 发布:音乐效果器软件 编辑:程序博客网 时间:2024/06/05 05:29
#include <stdio.h>#define MAXSIZE 20typedef int Status; typedef struct{    int data[MAXSIZE];    int length;    }SeqList;int BinarySearch(SeqList *seqList,int key){    int low=1;    int high=seqList->length;while(low<=high)    {        int middle=(low+high)/2;        if (seqList->data[middle]==key)        {            return middle;        }        else        {            if (seqList->data[middle]>key) high=middle-1;            else low=middle+1;        }    }    return 0;}void Display(SeqList *seqList){    int i;    for (i=0;i<seqList->length;i++)    {        printf("%d ",seqList->data[i]);    }}#define N 10void main(){    int i,j;    SeqList seqList;    int d[N]={04,13,27,38,49,49,55,65,76,97};    for (i=0;i<N;i++)    {        seqList.data[i]=d[i];    }    seqList.length=N;    Display(&seqList);    j=BinarySearch(&seqList,38);    if (j!=0) printf("\n在列表中的位置是:%d\n",j+1);    else printf("没有找到该元素!");getchar();}

0 0