解决哈希冲突的几种办法

1,开放地址法

基本思想是发生冲突时,再使用另一种操作探测其他空位

公式就是:H(key) = [H(key)+di] mod m,其中m为表长度,di就是我们说的另一种操作;

di为再次探测时的地址增量;根据di的不同取法,有不同的称呼;  

  1. 线性探测再散列:di = 1、2、3、4....k (k<m-1)  
  2. 二次探测再散列:di = 1^2,-1^2,2^2,-2^2.....k^2,-k^2 (k<=m/2)  
  3.  伪随机再散列:di = 伪随机数  

2,再哈希法

基本思想是发生冲突时,再次使用哈希函数,直到无冲突

公式就是Hi = RHi(key), i = 1,2,3,4,5,6....k;

产生冲突时,再使用另一个哈希函数,直到不冲突

比如第一次按照姓首字母进行哈希,如果产生冲突可以按照姓字母第二位进行哈希,再冲突,第三位,直到不冲突为止;

3,拉链法

HashMap中使用的方法

4,建立公共溢出区

对冲突数据集中管理

猜你喜欢

转载自blog.csdn.net/ailaojie/article/details/88953949