求双散列结果·题目

题目:
使用闭散列方法,利用双散列方法解决冲突,把下面的关键码插人到一个有13个槽的散列表中
(槽从0到12编号)。使用的散列函数H1和H2在下面定义。给出插人8个关键码值后的散列
表。一定要说明如何使用H1和H2进行散列。函数Rev(h)颠倒十进制数k的各个位的数字,例
如Rev(37) =73; Rev(7) =7。
H1(k) =k mod 13。
H2(h) =( Rev(k+1) mod 11)。
关键码: 2、8、31、20、19、18、53、27。

最后结果:

0123456789101112
53227311920818

过程:

  1. 算出两个散列函数
Key28312019185327
h1(k)28576511
h2(k)39112315

其中,18和27散列后的值与前面的槽相同,发生聚集

  1. 进行散列
0123456789101112
5323119208

①先把不冲突的放入对应槽中
②冲突的:
18:h1(k)+1h2(k)=8,第8号槽非空,继续探查
h1(k)+1
h2(k)=11,第11号槽空,放入第11号槽
27:h1(k)+1h2(k)=6,第6号槽非空,继续探查
h1(k)+2
h2(k)=11,第11号槽非空,继续探查
h1(k)+2*h2(k)=16,16%13=3,第3号槽空,放入第3号槽

于是得出答案如上。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值