二分法查找
#include <stdio.h>#define MaxSize 100typedef 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);}