最常用的3個hash函式:
1. 除法雜湊法:通過取k除以m的餘數,來將關鍵字k對映到m個槽的某乙個中去,即雜湊函式為:
h(k) = k mod m
2. 乘法雜湊法:首先,用關鍵字k乘上常數a(0
h(k) = ⌊m(ka mod 1)⌋
3.全域雜湊法(universal hashing)
4平方取中法
5.摺疊法
解決衝突常用的兩種方法:
1. 鏈結法(chaining):把雜湊到同一槽中的所有元素都存放在乙個鍊錶中。每個槽中有乙個指標,指向由所有雜湊到該槽的元素構成的鍊錶的頭。如果不存在這樣的元素,則指標為空。如果鏈結法使用的是雙向鍊錶,那麼刪除操作的最壞情況執行時間與插入操作相同,都為o(1),而平均情況下一次成功的查詢需要θ(1+α)時間。α是裝填因子。
2. 開放定址法(openaddressing):所有的元素都存放在雜湊表中。因此,適用於動態集合大小n不大於雜湊表大小的情況,即裝載因子不超過1。否則,可能發生雜湊表溢位。有三種技術常用來計算開放定址法中的探測序列:線性探測、二次探測,以及雙重探測。
hash衝突處理
1 衝突是如何產生的?上文中談到,雜湊函式是指如何對關鍵字進行編址的規則,這裡的關鍵字的範圍很廣,可視為無限集,如何保證無限集的原資料在編址的時候不會出現重複呢?規則本身無法實現這個目的。舉乙個例子,仍然用班級同學做比喻,現有如下同學資料 張三,李四,王五,趙剛,吳露.假如我們編址規則為取姓氏中姓的...
Hash函式和Hash衝突
2.rehash 3.鍊錶法 4.建立公共溢位區 一 簡介 將任意長度的數值以某個對映規則對映為固定長度的數值,這個過程稱為hash,而這個對映規則被稱為hash函式,而對這個key value進行儲存的資料結構被稱為hash表。由於通過key的hash對映直接得到了記憶體位址,所以hash查詢的時...
Python 函式以及異常處理
define 定義 def 方法名字 形參 def test pass test 無引數無返回值 def test print 這是我的地盤 test 無引數有返回值 def test fond 學習python使我快樂 return fond t test print t 有引數無返回值 def ...