使用Open和Closed哈希表散列到7-Bucket表中

时间:2015-07-19 20:13:28

标签: hash

我正在处理有关打开和关闭哈希表的一些问题,并且遇到了问题。 我必须使用以下输入显示7-bucket哈希表在使用Open哈希和关闭哈希填充时的外观。 1,8,27,64,125,516,343

使用散列函数h(k)= k mod 7

我相信对于开放哈希,结果表看起来像这样:

0 - > 343

1 - > 1 - > 8 - > 64

2 - >

3 - >

4 - >

5 - >

6 - > 27 - > 125 - > 216

我理解这种类型的表格。但是,对于一个封闭的桌子,我知道你应该把这个项目放在下一个可用的桶中。在插入125之前,我已经包含了我认为封闭哈希表应该是什么样子。

0 - >

1 - > 1

2 - > 8

3 - > 64

4 - >

5 - >

6 - > 27

所以现在我必须插入125. 125 mod 7是6.但是6斗中存在碰撞。所以现在我将转移到下一个开放的桶。但是没有一个。我只是在哈希表的开头重新启动,并将其插入到桶0?

1 个答案:

答案 0 :(得分:1)

是的,你会“循环”并从头开始。对linear probing here有一个非常好的解释:

  

考虑上面提到的情况,其中数据'F'具有与数据'D'相同的哈希码。为了解决冲突,add算法需要探测表以便找到第一个空闲空间(在'C'之后)。

Linear probing example

  

考虑上面提到的情况,其中数据'F'具有与数据'D'相同的哈希码。为了解决冲突,add算法需要探测表以便找到第一个空闲空间(在'C'之后)。

Linear probing example

  

如果探测器循环返回,并最终到达它开始的相同元素,则意味着哈希表已满,并且不能再保存更多数据。添加操作将失败。

Linear probing example