我知道在Double Hashing中,
h1(key) = key mod 11
h2(key) = 7 - (key mod 7)
h1
表示从位置h1(键)开始,h2
表示所采取步骤的大小。
但我不知道如何解决探测序列。
例如,如果密钥为14
。
你能解释一下为什么答案是3,10,6,2,9,5,1,8,4,0
。
答案 0 :(得分:0)
在您的示例中,表的大小为11(编号为0到10的位置)。步长的大小是要添加到当前位置以获得下一个位置的数字(模数表的大小)。
h1 = 14 mod 11 = 3
h2 = 7 - (14 mod 7) = 7 - 0 = 7
因此,第一个位置,称为p
,是h1
给出的3。每个后续职位p'
由 -
p' = (p + h2) mod table_size
这个例子,
p' = (p + 7) mod 11
所以,第二个位置是 -
(3 + 7) mod 11 = 10 mod 11 = 10
,第三个是 -
(10 + 7) mod 11 = 17 mod 11 = 6
等等。