哈希表的查找(线性探测再散列关于查找的m值,如何取值)

       很多小伙伴分不清在哈希表查找时,m的值。实际上,在构造哈希时,m值就是小于等于表长的质数(一般取最大质数),在查找,第一次计算时,m值就是该质数,在发生冲突后的每一次计算m的值变为表长。

    那为什么第二次冲突时变成表长呢?是因为在构造哈希表时,当遇见同义词时(用线性探测)会造成顺延现象,如下图1fa183b08d9841a88d6dc15afc49302c.png

   而在查找某一数值时,第一次计算时m值为构造时计算使用的质数,得到哈希地址,当遇见冲突之后,计算时使用m的值为表长,方便查找该关键值的哈希位置,个人认为这样有便于查询整个表中是否有该关键值,类似于循环队列时。如果不太清楚的话,可以看一下循环队列的知识。下图是查找的例题,可以看到遇见冲突前后m的值不同。16dd8fa4247143c1a35bf10179e97e70.png

  总的来说,在构造哈希表时,m的值为小于等于表长的质数(一般取最大),且遇见冲突后计算时m的值不变;在进行哈希查找时,第一次计算m的值使用构造哈希表时使用的质数,得到哈希地址,在遇见冲突后的每一次计算,m的值为表长。目的是为了方便哈希查找。如果有不准确的地方,还请指导。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值