解決Hash沖突的四種方法


1、開放地址法

所謂的開放定址法就是一旦發生了沖突,就去尋找下一個空的散列地址,只要散列表足夠大,空的散列地址總能找到,並將記錄存入。

公式為:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1) 

2、再hash法

再哈希法又叫雙哈希法,有多個不同的Hash函數,當發生沖突時,使用第二個,第三個,….,等哈希函數
計算地址,直到無沖突。雖然不易發生聚集,但是增加了計算時間。

3、拉鏈法(也叫鏈地址法)

Java中HashMap的實現就是用這種方法解決沖突的。也就是發生沖突后,以鏈表的形式進行追加元素

拉鏈法的基本思想是:每個哈希表節點都有一個next指針,多個哈希表節點可以用next指針構成一個單向鏈表,被分配到同一個索引上的多個節點可以用這個單向鏈表連接起來

4、建立公共益處區

這種方法的基本思想是:將哈希表分為基本表和溢出表兩部分,凡是和基本表發生沖突的元素,一律填入溢出表

 

更多可參考:https://www.cnblogs.com/lyfstorm/p/11044468.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM