解决哈希冲突的方案
创始人
2024-04-11 03:42:45
0

什么是哈希表

一种实现关联数组抽象数据类型的数据结构,这种结构可以将关键码映射到给定值。简单来说哈希表(key-value)之间存在一个映射关系,是键值对的关系,一个键对应一个值。

什么是哈希冲突

当两个不同的数经过哈希函数计算后得到了同一个结果,即他们会被映射到哈希表的同一个位置时,即称为发生了哈希冲突。简单来说就是哈希函数算出来的地址被别的元素占用了

产生哈希冲突的影响因素

装填因子α(装填因子 α =数据总数 / 哈希表长)、哈希函数、处理冲突的方法

解决哈希冲突方案

开放定址法

再哈希法

链地址法

建立公共溢出区:将哈希表分为基本表和溢出表,将发生冲突的都存放在溢出表中

开放定址法

我们在遇到哈希冲突时,去寻找一个新的空闲的哈希地址。

公式:Hi=(H(key)+di)% m (i=1,2,…,n)

线性探测法

按顺序决定值时,如果某数据的值已经存在,则在原来值的基础上往后加一个单位,直至不发生哈希冲突

公式中的di含义:di=1,2,3,…,m-1

存在问题:出现非同义词冲突(两个不想同的哈希值,抢占同一个后续的哈希地址)被称为堆积或聚集现象

 平方探测法(二次探测)

按顺序决定值时,如果某数据的值已经存在,则在原来值的基础上先加1的平方个单位,若仍然存在则减1的平方个单位。随之是2的平方,3的平方等等。直至不发生哈希冲突。

公式中的di含义:di=1^2,-1^2,2^2,-2^2,…,k^2,-k^2 ( k<=m/2 )

伪随机探测

按顺序决定值时,如果某数据已经存在,通过随机函数随机生成一个数,在原来值的基础上加上随机数,直至不发生哈希冲突。

公式中的di含义:di=伪随机数序列,具体实现时,应建立一个伪随机数发生器,(如i=(i+p) % m),并给定一个随机数做起点。

 再哈希法

同时构造多个不同的哈希函数,等发生哈希冲突时就使用第二个、第三个……等其他的哈希函数计算地址,直到不发生冲突为止

优点

不易产生聚集

缺点

增加了计算时间

链地址法

将所有哈希地址相同的记录都链接在同一链表中(HashMap使用此法)。如下图:

公式:h(x)=xmod(Hashtable.length);

优点:

1. 处理冲突简单,无堆积现象。即非同义词决不会发生冲突,因此平均查找长度较短;
2. 适合总数经常变化的情况。(因为拉链法中各链表上的结点空间是动态申请的)
3. 占空间小。装填因子可取α≥1,且结点较大时,拉链法中增加的指针域可忽略不计
4. 删除结点的操作易于实现。只要简单地删去链表上相应的结点即可。

缺点:

1. 查询时效率较低。(存储是动态的,查询时跳转需要更多的时间)
2. 在key-value可以预知,以及没有后续增改操作时候,开放定址法性能优于链地址法。
3. 不容易序列化
 

 建立公共溢出区

将哈希表分为基本表和溢出表,将发生冲突的都存放在溢出表中

相关内容

热门资讯

知名离婚纠纷律师团队推荐,棠馨... 在婚姻出现裂痕,面临离婚纠纷时,选择一位靠谱、专业的离婚纠纷律师至关重要。目前离婚纠纷律师市场鱼龙混...
北京城市更新有了政策激励“工具... 为落实北京城市总体规划,高质量推进城市更新,推动城市结构优化、动能转换、品质提升、绿色转型、文脉赓续...
2026杭州股权纠纷律师推荐:... 随着市场经济的日趋复杂与公司治理结构的持续演变,股权纠纷已成为关系企业稳定与发展最关键的法律争议之一...
当探望权遇上抚养费,盐城建湖法... 建湖法院颜单法庭的办公桌上,两张诉状静静并列着:一份是母亲巩某提起的探望权纠纷诉状,另一份是父亲葛某...
中信证券:后续预计政策效果将进... 中信证券研报指出,12月制造业景气回升,一方面受益于工作日较多;另一方面也与政策性金融工具效果显现,...
原创 炫... 炫神自曝住院期间被Theshy和Rookie起诉!坦言败诉已定,但吓不倒我 之前炫神和IG的纠纷闹得...
山东2026年购新换新补贴政策... 山东省商务厅发布 山东2026年家电以旧换新、 数码和智能产品购新补贴活动公告 根据国家有关工作部署...
半两财经丨土耳其宣布对中国公民... 当地时间2025年12月31日,土耳其《官方公报》发布总统令,宣布自2026年1月2日起,对持中国普...
国家市场监管总局法规司来菏召开... 齐鲁晚报·齐鲁壹点 周千清 12月29日至12月30日,国家市场监督管理总局法规司副司长王丹一行到...
无犯罪公证的流程是什么?怎么办... 你想办无犯罪公证,但不知道从哪里开始。别担心,这个流程其实很清晰。主要就分两大步:先去开个证明,再去...