a)開放位址法
這個過程可用下式描述:
hi (key) = ( h (key)+ di ) mod m ( i = 1,2,……,k (k ≤ m – 1) )
例1設有雜湊函式h (key) = key mod 7
,雜湊表的位址空間為0 ~ 6
,對關鍵字序列( 32 , 13 , 49 , 55 , 22 , 38 , 21 )
按線性探測再雜湊和二次探測再雜湊的方法分別構造雜湊表。
解:(1)線性探測再雜湊:
32 % 7 = 4 ; 13 % 7 = 6 ; 49 % 7 = 0 ;
38 % 7 = 3 ;
21 % 7 = 0 發生衝突,按照上面方法繼續探測直至空間 5 ,不發生衝突,所得到的雜湊表對應儲存位置:
下標: 0 1 2 3 4 5 6
49 55 22 38 32 21 13
(2)二次探測再雜湊:
下標: 0 1 2 3 4 5 6
49 22 21 38 32 55 13
b)再雜湊法
比如上面第一次按照姓首字母進行雜湊,如果產生衝突可以按照姓字母首字母第二位進行雜湊,再衝突,第三位,直到不衝突為止。
c)鏈位址法
如下:
d)建立乙個公共溢位區
解決Hash衝突的4種辦法
1 衝突是如何產生的?上文中談到,雜湊函式是指如何對關鍵字進行編址的規則,這裡的關鍵字的範圍很廣,可視為無限集,如何保證無限集的原資料在編址的時候不會出現重複呢?規則本身無法實現這個目的。舉乙個例子,仍然用班級同學做比喻,現有如下同學資料 張三,李四,王五,趙剛,吳露.假如我們編址規則為取姓氏中姓的...
hash,解決hash衝突的方法
數字分析法 平方取中法 除留餘數法 偽隨機數法 線性探測 二次探測 偽隨機數探測 拉鍊探測。如果負載因子是預設的0.75,hashmap 16 的時候,佔16個記憶體空間,實際上只用到了12個,超過12個就擴容。如果負載因子是1的話,hashmap 16 的時候,佔16個記憶體空間,實際上會填滿16...
解決hash衝突的四種辦法
目錄 開放定址法 線性探測再雜湊 二次探測再雜湊 偽隨機探測再雜湊 再雜湊法 鏈位址法 建立公共溢位區 優缺點 開放雜湊 open hashing 拉鍊法 針對桶鏈結構 封閉雜湊 closed hashing 開放定址法 通過構造效能良好的雜湊函式,可以減少衝突,但一般不可能完全避免衝突,因此解決衝...