【发布时间】:2012-10-19 10:25:20
【问题描述】:
我有一个大小为 11 的哈希表,以数组的形式实现。我正在尝试使用双哈希技术;我已经完成了我的大部分数字。我的哈希函数如下:
h1 = key mod 11
h2 = 3*key mod 4
这给了我h(k,i) = k mod 11 + i(k * 3 mod 4) 其中 i = 0, 1, 2, 3, ...
我已经填充了插槽 0、1、4、8、9 和 10。我正在尝试插入 19。这是我对 19 进行哈希处理的结果:
1st time: 8 <-- collision
2nd time: 9 <-- collision
3rd time: 10 <-- collision
4th time: 11 <--- well there is no index 11 table ends with index 10
我该怎么办?
另外,当他们说“让表有 11 个插槽”时,这是否意味着哈希表有从 0 到 10 的可用插槽?
【问题讨论】:
-
你
mean h(k,i) = key mod 11 + i*(key*3 mod 4)了吗? -
是的,如果我们第一次失败,我们必须使用的功能。
-
好的,如果所有 11 个插槽都已满怎么办?
-
您的哈希函数产生的值不在 [0..10] 范围内,请尝试修改它
-
我正在查看这本书以再次确认。它说 h(k,i) (h2(k) +i*h2(k)) mod m 。所以 Searge 很抱歉,我认为我对方程式有误,
标签: algorithm hash double-hashing