演算法導論_第十章_雜湊表
雜湊表大概就是把給每個要儲存的資料都用雜湊函式給定乙個關鍵字,對應到乙個槽。
由於不同的資訊可能對應同樣的關鍵字,也就是說對應同乙個槽,這時要解決其衝突,解決衝突可以用鏈結法,和開放定址法。
對於鏈結法,其對於衝突採取鍊錶進行解決,這樣就保證了資料不會發生衝突。
其查詢的平均時間為o(1+n/m)
11.3雜湊函式
乙個好的雜湊函式能夠將每個關鍵字都被等可能地雜湊到m個槽位中的任何乙個,並與其他關鍵子已雜湊到哪個槽位無關。
除法雜湊法:h(k)=k mod m m接近a 但不接近2的任何次數
乘法雜湊法:h(k)=[m(ka mod 1)]
全域雜湊法:對於相同的關鍵字,其能夠對應到不同的槽,這就要隨機的選擇乙個作為雜湊函式。一對關鍵字發生衝突的原因的概率至多為1/m,我們根據期望的線性性可以得出 e[y] = n/m = a e[y]
所以其有良好的平均運**況。
設計乙個全域雜湊的函式類
其 re=h(k,j)
這樣其為乙個探查序列,為其乙個排列。
線性探查: m種序列,其會出現集群現象。
二次探查: m種序列,其導致輕度集群。
雙重雜湊: m*m種序列
由於知識水平有限,關於雜湊表的其他的一些知識,這裡不再介紹,待以後補充!
演算法導論 第十一章 雜湊表
當將乙個域u中的元素對映到乙個雜湊表t中時,我們如何對映?若對映到同一位置怎麼辦?前乙個問題我們通過hash函式來解決,後乙個問題我們通過 衝突處理 解決。1 除法 h k k mod m m的選取 素數,且不要太靠近 2的冪次方 2 乘法 其中,0 eg 當m 8 2 3,w 7時 3 全域雜湊 ...
演算法導論 第十一章 雜湊表
雜湊表是實現字典操作的一種有效資料結構。雜湊表是普通陣列概念的推廣,由於對普通陣列可以直接定址,使得能在o 1 時間內訪問陣列中的任意位置。如果儲存空間允許,我們可以提供乙個陣列,為每個可能的關鍵字保留乙個位置,以利用直接定址技術的優勢。當實際儲存的關鍵字數目比全部的可能關鍵字總數要小時,採用雜湊表...
演算法導論學習筆記 第十一章 雜湊表
第十一章 雜湊表總結 這一章講了直接定址表和雜湊表,並介紹了一些雜湊函式等。1.直接定址表 直接將關鍵字作為陣列下標。複雜度 o 1 2.雜湊表 k h k 降低了空間開銷,會產生碰撞,解決碰撞的簡單方法是鏈結法。對鏈結法雜湊,平均情況下,複雜度也是 o 1 3.雜湊函式 1 除法雜湊法 h k k...