查找
1. 顺序查找
#define ElemType int
typedef struct
{
ElemType *elem;
int TableLen;
}SSTable;
int Search_Seq(SSTable ST,ElemType key)
{
int i;
for(i=0;i<ST.TableLen && ST.elem[i]!=key;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;
}
2. 折半查找
#define ElemType int
typedef struct
{
ElemType *elem;
int TableLen;
}SSTable;
int Binary_Search(SSTable L,ElemType key)
{
int low=0,high=L.TableLen-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(L.elem[mid]==key)
return mid;
else if(L.elem[mid]>key)
high=mid-1;
else
low=mid+1;
}
return -1;
}
3. 分块查找
#define ElemType int
typedef struct {
ElemType maxValue;
int low,high;
}Index;
ElemType List[100];
....
...
..
.