我对这个Double Hashing是对的吗?

时间:2013-06-03 08:16:22

标签: algorithm hashtable double-hashing

我正在学习Double Hash,我很难理解它是如何工作的。我做了一个例子,但我不知道这是对还是错。如果有人可以帮助我会很棒。 这是输入:


m = 13


k = {5,14,29,25,17,21,18,32,20,9,15,27}


h1(k)= k mod 13


h2(k)= 1 +(k mod 11)

My result

1 个答案:

答案 0 :(得分:3)

只要m为素数就行。

否则h2(x)可以评估为m m = 36,这可能会导致算法失败,因为还有更多项目的空间。

例如:

  • h1(x) = 1
  • h2(x) = 30
  • table[1]
  • 如果table[31]table[19]table[13]table[7]table[1]全部使用;然后,将要检查的下一个广告位再次为h2(x)

如果mm的相对素数,则循环将始终访问所有时段,然后返回起始点。如果{{1}}是素数,则所有数字都是相对素数。