假设使用双重哈希算法,
h(k) = k mod 29 & h'(k) = 13 - k mod 13
并且用于二次哈希算法
h(k) = k mod 29 & h'(k) = h(k) + (j * j)
[如果数组的大小相同(两种算法都为29)。
您是否能够分别使用这两种算法来构造相同的哈希表?
如果要从存储桶阵列中输出每个单独的键(及其各自的值),这些键(来自两种算法)是否会在存储桶阵列中位于同一位置?还是将键排序不同?
如果j
为常数,则为否。没有常数j
可以满足等式:
13 - k mod 13 == (k mod 29 + (j * j)) mod 29
对于k
的所有值。
顺便说一下,13 - (k mod 13)
是一个糟糕的辅助哈希函数。这会将您的辅助哈希限制在0到12之间。与第13到28个存储桶相比,前13个存储桶的键数更多。