algorithm - 我什么时候应该重新哈希整个哈希表?

标签 algorithm hash hashtable

我如何决定何时对整个哈希表进行重新哈希处理?

最佳答案

这在很大程度上取决于您如何解决冲突。如果您使用线性探测,当负载系数远高于 60% 左右时,性能通常会开始大幅下降。如果您使用双哈希,80-85% 的负载因子通常是相当合理的。如果您使用碰撞链接,性能通常保持合理,负载因子高达 150% 或更多。

有时我什至创建了一个带有平衡树的哈希表来解决冲突。在这种情况下,您几乎可以忘记重新散列——直到项目数量超过表大小至少几个数量级时,性能才会开始明显下降。 p>

关于algorithm - 我什么时候应该重新哈希整个哈希表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1603712/

相关文章:

python - 从源代码构建 mmh3 包

arrays - 给定 3 个排序数组 A、B、C 和数字 S,找到 i、j、k 使得 A[i] + B[j] + C[k] = S

c# - 从字符串中提取温度

algorithm - 基于寄存器的编译器中递归函数的性能

qt - QCryptographicHash::Sha3_256 在 Qt5.4 和 Qt5.8 中有所不同

java - 尝试在空对象引用上调用虚拟方法 'boolean java.util.ArrayList.add(java.lang.Object)'

java - Hashtable 接口(interface),用于设置对象实例的键

java - 我们可以在 Java 的 Hashtable 中创建一对 (a,b) 作为值吗

c++ - 我可以覆盖 std::hash 吗?

string - "loop rolling algorithm"的解释