我在准备测试时遇到了这个问题。
长度为10的哈希表使用具有散列函数h(k)=k mod 10
的开放寻址和线性探测。将6个值插入空哈希表后,
表格如下所示
0 |
1 |
2 | 42
3 | 23
4 | 34
5 | 52
6 | 46
7 | 33
8 |
9 |
使用相同哈希的键值的多少个不同插入序列 函数和线性探测将导致上面显示的哈希表?
(A)10(B)20(C)30(D)40
解决方案中给出的答案:c
有人可以解释一下如何计算答案吗? TIA
答案 0 :(得分:5)
因为 33 mod 10 = 3 并存储在第7个位置,我们知道它必须在23,34,52,46之后出现并且为52因此,在33之前,42(相同的哈希值)也是如此。我们已经确定序列中 33 last 。
其他数字有两种情况:
(1)考虑到52来自42,23,34(因为它们是根据它们的哈希值存储的),可以在3中重新排列!方法。这意味着52位来自第4位位置,46位排在第5位。
(2)考虑到52来自42,23,34,46,可以重新排列为4!方法。这意味着52位于 5th 位置。
因此,插入序列的总数= 4! + 3! = 30
答案 1 :(得分:2)
在有效的插入序列中,元素42,23和34应出现在52和33之前,而46必须出现在33之前。 这里不同序列的数量= 3! x 5 = 30 在上面的表达中,3!是元素42,23和34,因为它们可以按任何顺序出现,5代表元素46,因为它可以出现在5个不同的地方。