双散列给出的数字大于表的大小

时间:2012-10-30 05:03:02

标签: algorithm hash double-hashing

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

1 个答案:

答案 0 :(得分:2)

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

h(k,i) = (key + i*(key*3 mod 4)) mod 11