我这里有关于双重哈希的作业,我在一点上堆叠:
我有阵列: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将变为负数 - 这也是不好的。
我做错了什么?
由于 祖扎娜
答案 0 :(得分:0)
我认为你错误地解释了如何计算双哈希的索引。索引应该是
(h 1 (k)+ j·h 2 (k))mod TableSize
因此,你应该使用这两个哈希函数的公式是
((k mod 11)+ j·(1 +(k mod 9)))mod 11