2016-11-23 64 views
0

我这里有一个大约双散列家庭作业和I堆栈上的一个点:双散列 - HashValues以外的HashTable范围

我有阵列:17,6,5,8,11,28,14,15 (k)= k mod 11 +(j(k)= k mod 11, h 2(k)= k mod 11, h 2 。+(K MOD 9)

现在我计算hashvalues:

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

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

我在做什么错?

感谢 祖扎娜

回答

0

我想你误解了如何计算的双哈希索引。该指数应

(H (K)+ J· H (k))的模TableSize

所以公式应与这两个散列函数的使用将是

((K MOD 11)+ J·(1 +(K MOD 9)))模11

+0

由于很多,这非常有帮助! –