我正在研究现在和特定哈希表中的数据结构。我遇到了以下问题:
Imagine that we have placed the following keys
in an initial empty hash table with a length of 7
with linear probing, using the following table of hash-values:
key: A B C D E F G
hash: 3 1 4 1 5 2 5
Which of the following arrays could be the linear-probing array?
1.
0 1 2 3 4 5 6
G B D F A C E
2.
0 1 2 3 4 5 6
B G D F A C E
3.
0 1 2 3 4 5 6
E G F A B C D
当我创建线性探测数组时,我得到了这个:
0 1 2 3 4 5 6
G B D A C E F
有人可以告诉我为什么我错了,得到了正确答案吗?
答案 0 :(得分:1)
注意问题是如何指定键的插入顺序的,所以你的答案是正确的,假设键实际上是按照ABCDEFG的顺序插入的,但由于问题没有明确说明说明命令,你需要深入挖掘。
然而,您知道的是,其中一个密钥将首先被插入,并且它将转到其指定的插槽,如Key-to-Hash图所示,因为哈希表最初是空的。这会立即丢弃选项2,因为没有任何键位于其指定的数组条目中,只留下选择1和3.
对于表1,B
位于插槽1中,对应于其散列值,对于表3,键F
和A
位于其初始散列值点。< / p>
证明插入F
和A
后表3上的任何键插入序列都不会产生表3,这很简单。并且同样容易证明密钥插入序列B-D-F-A-C-E-G
将导致表1。
虽然这是一个基于哈希表的问题,但老实说,我并不认为这是评估线性探测知识的好方法,这更像是一个谜题,正如@ gnasher729所提到的那样。