資料結構 hash衝突的解決方法

2021-08-04 02:52:59 字數 1106 閱讀 4461

1.直接定址法

取關鍵字的某個線性函式值為雜湊位址

f ( key ) =a x key+b (a 、b 為常數)

2.數字分析法使用關鍵字的一部分來計算雜湊儲存位置的方法

3.平方取中法

平方後取中間的三位數,適合子不知道關鍵字的分布,而位數又不是很大的情況。

4.摺疊法

5.隨機數法

選擇乙個隨機數,取關鍵字的隨機函式值為它的雜湊位址

6.除留取餘法

最常用的構造雜湊函式方法。對於雜湊裴長為m 的雜湊函式公式為:

f ( key) = key mod p (p <=m)

注:mod 是取模(求餘數)的意思。這方法不僅可以對關鍵宇直接取模,也可在摺疊、平方取中後再取模。,若雜湊表表長為m , 通常p 為小子或等於表長(最好接近m ) 的最小質數或不包含小子20 質因子的合數。

1.開放定址法

f, ( key ) = ( f ( key ) +dl ) mod m (d,=1.2 ,3.. . …. .m-1 )

(1)線性探測法

(2)二次探測法(增加平方運算,避免堆積)

(3)隨機探測法(位移量di採用隨機函式計算得到)

2.再雜湊函式法

事先準備多個雜湊函式,每當發生散到位址衝突肘,就換乙個雜湊函式計算,這樣增加了計算的時間,比較低效。

3.公共溢位區法

將雜湊表分為基本表和溢位錶兩部分,凡是和基本表發生衝突的元素,把所有衝突的關鍵字放入溢位表中。

4.鏈位址法

本人才疏學淺,若有錯,請指出

謝謝!

Hash衝突解決方法

當關鍵字值域遠大於雜湊表的長度,而且事先並不知道關鍵字的具體取值時。衝突就難免會發 生。另外,當關鍵字的實際取值大於雜湊表的長度時,而且表中已裝滿了記錄,如果插入乙個新記錄,不僅發生衝突,而且還會發生溢位。因此,處理衝突和溢位是 雜湊技術中的兩個重要問題。1.開放位址法 開放位址法公式 h h ke...

Hash衝突解決方法

假設hash表大小為5 即5個槽位 現在要把2,5,6,7,8這幾個數儲存到hash表中,假設hash函式為hash num num size 簡單計算下,第乙個數2的hash值為2所以放到第三個槽中,第二個數5的hash值為0放到第乙個槽中,第三個數6的hash值為1放到第二個槽中,如下圖所示 1...

hash表的衝突解決方法

如圖所示,今有若干資料,將其使用鏈位址法儲存起來,其示意圖如下,如果衝突了就把他接在別人的屁股上,真的是相當方便和簡單呢。這些都是屬於開放位址法 注意對雙重hash要與再hash做好區分 比如依次插入 比如49時衝突了 9 1 mod 0 就插入0號位,58衝突時就正負1不行了都衝突了,就輪到2的平...