Double Hashing - HashTable范围之外的哈希值

时间:2016-11-23 20:21:36

标签: hash double-hashing

我这里有关于双重哈希的作业,我在一点上堆叠:

我有阵列:17,6,5,8,11,28,14,15     h1(k)= k mod 11,     h2(k)= 1 +(k mod 9),     哈希表的大小= 11 这个双哈希函数:dh(k)= k mod 11 +(j +(k mod 9)。

现在我计算哈希值:

h(17) = k mod 11 = 6 - OK
h( 6) = 6 = collision => 6 + (1 + (6 mod 9) = 12 = NOK 

=>这超出了我的指数范围,并且每个更高的指数都会更高。如果我将第二个HashFuncion的添加更改为减法,那么HashValues将变为负数 - 这也是不好的。

我做错了什么?

由于 祖扎娜

1 个答案:

答案 0 :(得分:0)

我认为你错误地解释了如何计算双哈希的索引。索引应该是

  

(h 1 (k)+ j·h 2 (k))mod TableSize

因此,你应该使用这两个哈希函数的公式是

  

((k mod 11)+ j·(1 +(k mod 9)))mod 11