處理Hash衝突的方法

2021-09-26 23:22:17 字數 618 閱讀 7476

1、開發定址發

h(i) = (h(key) + di) mod m

其中i =1,2,3 ... m-1

m:hash表的長度

h(key)為hash函式

di為增量序列,序列的意思是如果得到的h(i)上已經有元素,取di+1。

根據di的取值方式不同可以分為3中情況

(1)、線性探測再雜湊

這是di取值為1,2,3…m-1,缺點二次聚集,對查詢不利,優點是,只要hash表沒填滿,總能找到乙個不發生衝突的位址。

(2)、二次探測再雜湊

di取值為1,-1,22,-22,33,-33…kl,-kk ,其中k取值範圍為1-m/2。缺點只有當hash表長度為4j+3的素數時候才可能填滿。

(3)、偽隨機探測再雜湊

di取值為偽隨機數序列,hash表的效能取決於偽隨機序列。

2、再hash

當出現hash衝突時候使用其他hash函式計算位址,直到不衝突位置。

3、鏈位址法

hash表的每個元素成指向鍊錶的指標,每個插入元素總能找到乙個位置,便插入到鍊錶中。

4、建立乙個公共溢位區

當發生hash衝突將發生衝突的鍵值對放入溢位表中。

Hash表處理衝突的方法

1.開放定址 線性探測 hi hash key di mod m 1 i m 其中 hash key 為雜湊函式 m 為雜湊表長度 di 為增量序列1,2,m 1,且di i 二次探測 hi hash key di mod m 其中 hash key 為雜湊函式 m 為雜湊表長度,m 要求是某個4k...

hash衝突處理

1 衝突是如何產生的?上文中談到,雜湊函式是指如何對關鍵字進行編址的規則,這裡的關鍵字的範圍很廣,可視為無限集,如何保證無限集的原資料在編址的時候不會出現重複呢?規則本身無法實現這個目的。舉乙個例子,仍然用班級同學做比喻,現有如下同學資料 張三,李四,王五,趙剛,吳露.假如我們編址規則為取姓氏中姓的...

hash,解決hash衝突的方法

數字分析法 平方取中法 除留餘數法 偽隨機數法 線性探測 二次探測 偽隨機數探測 拉鍊探測。如果負載因子是預設的0.75,hashmap 16 的時候,佔16個記憶體空間,實際上只用到了12個,超過12個就擴容。如果負載因子是1的話,hashmap 16 的時候,佔16個記憶體空間,實際上會填滿16...