- //顺序查找表
- typedef struct{
- ElemType *elem;
- int Tablelen;
- }SSTable;
- //不带哨兵版本
- int Search_Seq(SSTable ST, ElemType key)
- {
- for (int i=0;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;
- }