我已经阅读了哈希表的变体,但我不清楚哪一个更适合内存不足的系统(我们有内存约束限制)。
线性/二次探测适用于稀疏表。
我认为 Double hashing 在这方面与 Quadratic 相同。
外部链接不存在集群问题。
我查过的大多数教科书似乎都假设额外的空间总是可用的,但实际上在我见过的大多数示例实现中,因为哈希表永远不会减半,所以占用的空间比实际需要的多得多。
那么,当我们想要充分利用内存时,哪种哈希表变体最有效?
更新:
所以我的问题不仅仅是桶的大小。我的理解是,桶的大小和负载下的性能都很重要。因为如果存储桶的大小很小但表在 50% 的负载下降级,那么这意味着我们需要经常调整到更大的表。
最佳答案
参见 this variant的 Cukoo Hashing .
这将需要您提供更多哈希函数,但是,这是有道理的 - 您需要为节省的内存付出一些代价。
关于performance - 具有内存限制的系统的哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30514705/