gpt4 book ai didi

algorithm - 如何为动态哈希表实现哈希函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:28 26 4
gpt4 key购买 nike

我正在尝试实现一个通用的哈希表。(这个问题是问题 here 的延续)

我已经为表的大小固定的情况实现了通用哈希函数。但是,在实时情况下,使用大小最初固定为大约 2^32 位的 HashTable 是一个非常糟糕的主意,因为它可能会导致大量内存浪费。

所以,我现在要做的是,当 hast 表已满时,从某个初始值动态增加它的大小。

但是,当我执行此操作时,哈希函数将现在将新值返回给之前经过哈希处理的键

除了用新值重新散列以前散列的值之外,还有什么方法可以解决这个问题。

最佳答案

您无法避免重新哈希:元素在哈希表中结束的桶的位置取决于两个或三个因素,具体取决于您的冲突解决策略:

  • 元素的哈希码,
  • 表格的大小,以及
  • 当您使用线性探测时,是否存在具有哈希码的先验元素也会将它们放在同一个桶中

如果你改变了这三个因素中的任何一个,你需要一个完整的重新散列:除非你做了一些非常糟糕的事情,比如选择一个非主要的表大小,hashCode % tableSize 表达式的值当您更改 tableSize 时,确定位置将有所不同。在线性探测中散列到同一个桶的元素的存在与否也会发生变化。这就是为什么您需要完全重新哈希。

关于algorithm - 如何为动态哈希表实现哈希函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com