只要是靜態查找表即可
#define ElemType int
typedef struct {
ElemType *d;
int length;
}SSTable;
順序查找 S(n)=O(1) 哨兵空間
int Search_Seq(SSTable t,ElemType key)
{t.d[0]=key;for (int i = t.length; i >0 ; i--) {if(t.d[i]==t.d[0]){return i;}}return 0;
}
折半查找(二分查找):要求必須是順序存儲,且元素內有序
非遞歸
int Search_bin_notDG(SSTable t,ElemType key)
{int low=1,high=t.length-1;while (low<=high){int mid=(high+low)/2;if(t.d[mid]==key){return mid;}else if(t.d[mid]>key){high=mid-1;} else{low=mid+1;}}return 0;
}
遞歸
int Search_bin_DG(SSTable t,ElemType key,int high,int low)
{if(low>high){return 0;}int mid=(low+high)/2;if(t.d[mid]==key){return mid;}else if(t.d[mid]<key){Search_bin_DG(t,key,high,mid+1);}else{Search_bin_DG(t,key,mid-1,low);}}
分塊查找:主要是利用索引表進行查找,塊間有序,塊內有無序決定塊內查找方式