哈希表解决哈希冲突的方法

 

开放地址法

基本思想:当发生哈希冲突时,即两条记录对应的地址相同(假设都为 p),基于该地址 p 生成另一个地址 p1 作为后一条记录的存储地址。如果在 p1 上也发生了冲突,则基于 p1 生成下一个地址,直到找到一个不冲突的地址

 

再哈希法

基本思想:有多个不同的哈希函数用于计算记录的哈希值。当发生哈希冲突时,逐个使用其它哈希函数计算哈希值,获得存储地址,直到不冲突。

这种方法不易产生数据聚集,计算时间较长,删除数据不方便。

 

链地址法

基本思想:将产生哈希冲突的记录存到一个链表中,哈希表中存的是该链表的头

这种方法适用于经常进行插入和删除的情况。

Java 中的 HashMap 就用了该方法。当冲突数据太多时,HashMap 会用树结构替代单链表,来存储数据,以提供存取效率。

 

建立公共溢出区

基本思想:将哈希表分为 基本表 和 溢出表 两部分。凡是和 基本表 发生冲突的记录都被存到 溢出表。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值