1、顺序查找
#define MAXL 100
typedef int KeyType;
typedef char InfoType[10];
typedef struct {
KeyType key;
InfoType data;
}NodeType;
typedef NodeType SeqList[MAXL];
int SeqSearch(SeqList R,int n,KeyType k){
int i=0;
while(i=n){
return -1;
}else{
printf("%d",R[i].key);
return i;
}
}
2、折半查找
int BinSearch(SeqList R,int n,KeyType k){
int low=0,high=n-1,mid,count=0;
while (low<=high) {
mid=(low+high)/2;
printf("%d:在[%d,%d]中查找到元素R[%d]:,%d\n",++count,low,high,mid,R[mid].key);
if(R[mid].key==k){
return mid;
}
if(R[mid].key>k){
high=mid-1;
}else{
low=mid+1;
}
}
return -1;
}
3、分块查找
typedef struct {
KeyType key;
int link;
}IdxType;
typedef IdxType IDX[MAXL];
int IdxSearch(IDX I,int m,SeqList R,int n,KeyType k){
int low=0,high=m-1,mid,i,count1=0,count2=0;
int b=n/m;
printf("二分查找\n");
while(low<=high){
mid=(low+high)/2;
printf("第%d次查找: 在[%d,%d]中查找到元素R[%d]: %d\n",count1+1,low,high,mid,R[mid].key);
if(I[mid].key>=k){
high=mid-1;
}else{
low=mid+1;
}
count1++;
}
if(low