一、顺序查找
1.顺序查找表
//顺序查找表
typedef struct{
ElemType *elem;
int Tablelen;
}SSTable;
2.顺序查找代码
//不带哨兵版本
int Search_Seq(SSTable ST, ElemType key)
{
for (int i=0;i<ST.Tablelen&&key!=ST.elem[i];i++) {
return i==ST.Tablelen?-1:i;
}
}
//带哨兵
int Search_Seq(SSTable ST, ElemType key)
{
ST.elem[0]=key;
int i;
for ( i=ST.Tablelen;ST.elem[i]!=key;i--);
return i;
}
二、折半查找
int Binary_Searh(SSTable ST, ElemType key)
{
int low=0,high=ST.Tablelen-1,mid;
while (low<=high) {
mid = (low+high)/2;
if(ST.elem[mid]==key)
return mid;
else if(ST.elem[mid]>key) {
high=mid-1;
}
else {
low=mid+1;
}
}
return -1;
}