解决哈希冲突的几种办法

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,建立公共溢出区

对冲突数据集中管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值