【发布时间】:2010-09-18 13:04:35
【问题描述】:
如果我注意到哈希表(或基于哈希表构建的任何其他数据结构)正在填满,那么您应该在什么时候构建一个包含更多存储桶的新表。到目前为止,给定表中的 n 个项目,您如何计算在新的项目中要使用多少个桶?
假设我有 100 个存储桶。当里面有 50 个项目时,我应该重新组织它吗? 500? 5000?还是我应该寻找最满的桶和钥匙?那么当我达到这一点时,我要制作多大的新哈希表?
与此相关,如果你事先知道大概有多少项会进入,有没有办法计算桶的数量以获得良好的平均性能?
我知道真正的答案取决于许多其他考虑因素,例如在特定示例中速度与大小的重要性,但我正在寻找一般准则。
我也知道我不应该优化这类事情,除非良好的分析表明这是一个瓶颈。我只是在考虑一个会使用大量哈希表的项目,并且想知道如何解决这个问题。
【问题讨论】: