二分法查找

#include <stdio.h>
#define MaxSize 100

typedef int KeyType;

typedef char ElemType[10];

typedef struct
{    
    KeyType key;       /*存放关键字,KeyType为关键字类型*/
    ElemType data;    /*其他数据, ElemType为其他数据的类型*/
} LineList;

int BinSearch(LineList R[],int n,KeyType k)
{
    int i,low=0,high=n-1,mid;
    int find=0;                /*find=0表示未找到;find=1表示已找到*/
       while (low<=high && !find)
     {    mid=(low+high)/2;   /*整除取中间值*/
        if (k<R[mid].key) 
            high=mid-1;
        else if (k>R[mid].key) 
            low=mid+1;
           else 
        {    i=mid;
            find=1;
        }
}
     if (find==0) 
        return(-1);
else
        return(i);
}

void main()
{
    KeyType a[]={2,4,7,9,10,14,18,26,32,40},k=7;
    LineList R[MaxSize];
    int n=10,i;
    for (i=0;i<n;i++)
        R[i].key=a[i];
    i=BinSearch(R,n,k);
    if (i>=0)
        printf("R[%d].key=%d\n",i,k);
    else
        printf("%d不在a中\n",k);
}
Copyright © www.huweihuang.com 2017-2019 all right reserved,powered by GitbookUpdated at 2019-03-24 15:01:44

results matching ""

    No results matching ""