【问题标题】:are deleted entries counted in the load factor of a hash table using open addressing是使用开放寻址在哈希表的负载因子中计算的已删除条目
【发布时间】:2010-06-08 09:13:33
【问题描述】:

在计算具有我正在使用的开放寻址数组实现的哈希表的负载因子时:

numberOfKeysInArray/sizeOfArray

但是我想到,由于必须将已删除的条目标记为这样(以将它们与空格区分开来),因此将它们包含在键的数量中可能是有意义的。

我的想法是,就估计查找条目的平均探测次数而言,删除的条目应该计入负载因子,但就插入新键而言,它们不应该。

哪个是正确的计算方法:是否包括删除的键?

【问题讨论】:

  • P.S.我们可以有一个开放寻址标签吗?

标签: hashtable hash load-factor


【解决方案1】:

不,根据定义,负载因子是元素数量与桶数组大小的比率。参见例如Wikipediathis lecture

在加载因子中计算删除条目也会存在实际问题。大多数实现都有最大负载因子。如果实际超过允许的最大值,则增加后备数组大小。如果删除的条目计入更高的负载因子,这可能会导致不必要的数组大小增加,因为该表几乎是空的但碎片内容很高。

【讨论】:

  • 如果每个项目都保留一个标志或计数器,说明它是否需要作为其他东西的“垫脚石”,而删除的项目在不需要时完全消失,有大量的“垫脚石”石头”可能是一个表应该被扩展和重新散列的标志。如果一张桌子的大小合适,我认为即使添加和删除了许多项目,我认为其中不需要有很多“已删除项目”的垫脚石。
猜你喜欢
  • 2016-10-20
  • 2011-02-03
  • 2013-11-30
  • 1970-01-01
  • 2011-11-17
  • 2012-02-25
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
相关资源
最近更新 更多