雜湊查詢(雜湊查詢)
雜湊的第一步是使用雜湊函式將鍵對映成索引
1)除留取餘法(最常用的):特點是容易造成堆積,產生衝突
2)特徵值
3)字元型別的
在查詢中陣列的特點是定址容易,插入和刪除困難,鍊錶則相反
雜湊表將二者的特點綜合。
雜湊表建表:通過某種關係轉換,使關鍵字適度的分散到制定大小的順序結構中,越分散,以後查詢的時間複雜度就越小,相反空間複雜度就會越大。
拉鍊法解決雜湊衝突:(時間複雜度幾乎為o(1))
h(k)=k%p;
理論研究證明,p取小於雜湊表長度的素數時效果最好。
**實現建表與查詢:
//節點資料結構定義
typedef struct node
node;
typedef struct
hash;
//插入及建表演算法h(k)=k%p;
void insert(hash ha,int cnt,int p,int k)
cnt++;//雜湊表中總結點加1
}void create(hash ha,int cnt,int m,int p,int key,int n)
if(p!=null)
printf("查詢成功,關鍵字%d,比較%d次。\n",k,i);
else
printf("查詢失敗。\n");
}
2.開放定址 雜湊表(拉鍊法)
開雜湊法又叫鏈位址法 開鏈法 開雜湊法 首先對關鍵碼集合用雜湊函式計算雜湊位址,具有相同位址的關鍵碼歸於同一子集合,每乙個子集合稱為乙個桶,各個 桶中的元素通過乙個單鏈表鏈結起來,各鍊錶的頭結點儲存在雜湊表中。設元素的關鍵碼為37,25,14,36,49,68,57,11,雜湊表為ht 12 表的大...
雜湊錶開雜湊法(拉鍊法)
開雜湊法又叫鏈位址法 開鏈法 設元素的關鍵碼為37,25,14,36,49,68,57,11,雜湊表為ht 12 表的大小為12,雜湊函式為hash x x 11 hash 37 4 hash 25 3 hash 14 3 hash 36 3 hash 49 5 hash 68 2 hash 57 ...
雜湊表(閉雜湊 拉鍊法 雜湊桶)
雜湊表,也稱雜湊表,是一種通過key值來直接訪問在記憶體中的儲存的資料結構。它通過乙個關鍵值的函式 被稱為雜湊函式 將所需的資料對映到表中的位置來訪問資料。關於雜湊表,主要為以下幾個方面 一 雜湊表的幾種方法 1 直接定址法 取關鍵字key的某個線性函式為雜湊位址,如hash key key 或 h...