存储散列表时如何指示索引?

时间:2017-03-22 07:13:45

标签: algorithm hashtable

您需要在哈希表中存储一些数字。碰撞由封闭的散列方法处理(没有 链接)。该表有4个桶,哈希函数是KmodN,其中N是桶的数量。 存储项目的命令如下所示,并按给定的顺序执行。 数字8将存储在哪个桶(索引)中?

hashtable.add(2)
hashtable.add(4)
hashtable.add(6)
hashtable.add(8)

我希望它很简单,因为我认为我会选择0?

1 个答案:

答案 0 :(得分:0)

封闭散列方法表示只有1个项目/存储桶。没有链接完成。因此,hashtable.add(2)会使广告符position 0占用。

现在hashtable.add(8)也会哈希到存储桶position 0。这是碰撞

在封闭散列中,有一个rehash策略,我们尝试其他散列函数给出的其他位置,如果找到空白位置,我们填充该位置的项目,如果我们找不到任何空白位置,我们声明哈希表已满。

因此,如果您的rehash函数哈希到position 3,则该项将转到该桶,否则它将声明哈希表已满。但除非你陈述你的改革策略,否则没有什么可以确定的。