雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f(key)。
我們把這種對應關係f稱為雜湊函式,又稱為雜湊(hash)函式。
雜湊表(雜湊表):即採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這個空間即為雜湊表。關鍵字對應的記錄儲存位置為雜湊位址。
原則:
1,計算簡單:儘量減少雜湊函式的計算時間
2,雜湊位址分布均勻:盡量讓雜湊位址均勻地分布在儲存空間中,這樣可以保證儲存空間的有效利用,並減少為處理衝突而耗費的時間。
方法:
1,直接定址法:f(key)=key,f(key)=a*key+b
2,數字分析法:利用數字的特性選擇部分數字作為關鍵字,適合關鍵字位數比較大的情況,如果事先知道關鍵字的分布且關鍵字的若干位分布較均勻,就可以考慮用這個方法。
3,平方取中法:關鍵字平方,再取中間幾位數字
4,摺疊法:將關鍵字從左到右分割成位數相等的幾部分,然後疊加求和,並按雜湊表表長,取後幾位作為雜湊位址。此方法事先不需要知道關鍵字的分布,適合關鍵字位數較多的情況。
5,除留餘數法: f(key)=(key) mod p (p<=m)
6,隨機數法:選擇乙個隨機數,取關鍵字的隨機函式值為它的雜湊位址。即f(key)=random(key)
所以應當根據不同的情況採用不同的雜湊函式
1,計算雜湊位址所需的時間
2,關鍵字的長度
3,雜湊表的大小
4,關鍵字的分布情況
5,記錄查詢的頻率
1,開放定址法:f(key)=(f(key)+d) mod m
2,再雜湊函式法:結合多個雜湊函式計算,若衝突,換另乙個雜湊函式
3,鏈位址法:每個關鍵字以單鏈表的方式存放
4,公共溢位區法:為所有衝突的關鍵字建立了乙個公共的溢位區來存放。(若雜湊表查詢不到資料,則在溢位表順序查詢)
其中定義雜湊表表結構,初始化雜湊表,雜湊函式的選擇及使用,插入關鍵字,查詢關鍵字,鑑於**比較簡單,不再寫出。
reference:《大話資料結構》
資料結構 雜湊表
1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...
資料結構 雜湊表
雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...
資料結構 雜湊表
3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...