哈希表冲突解决方法方法总结

参考书籍:《大话数据结构》

1. 开放定址法:一旦发生冲突,就去寻找下一个空的散列地址。

只要列表足够大,空的散列地址总能找到,并将记录存入。

        线性探测法:当使用线性探测法进时,会吹按不是同义词却需要争夺一个地址的情况,这种现象是堆积。

        二次探测法:增加平方运算为了不让关键字都聚集在某一块区域,解决堆积问题。

        随机探测法:在冲突时,对于位移量di采用随机函数计算得到。注意这里的随机其实是伪随机,根据随机种子得到

2. 再散列函数法:在冲突时,换用一个散列函数计算。

这种方法使得关键字不产生聚集,但同时增加了计算时间。

3. 链地址法:将所有关键字为同义词的记录存储在一个单链表中,在三列表中只存储所有同义词子表的头指针。

链地址法对于可能会造成很多冲突的散列函数来说,提供了绝不会出现找不到地址的保障,但也带来了查找时需要遍历单链表的性能损耗。

4. 公共溢出区法:为所有冲突的关键字建立一个公共的溢出区来存放。

 

在查找时,对给定值通过散列函数计算出散列地址后,咸鱼基本表的相应位置进行对比,如果想等则查找成功;如果不能,则到溢出表进行顺序查找。

#################################################

哈希函数的构造方法

1. 直接定址法:取关键字的某个线性函数作为散列地址

需要事先知道关键字的分布情况,适合查找表小且连续的情况

2. 数字分析法

3. 平方取中法

4. 除留余数法:

最常用的哈希函数构造方法,不仅可以直接mod,也可以平方取中、折叠后在mod

5. 随机数法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值