0

我有一个大小为 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 的可用插槽?

4

1 回答 1

3

此更改将修复错误的哈希表索引计算:

h(k,i) = (key + i*(key*3 mod 4)) mod 11
于 2012-10-30T05:15:12.490 回答