首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >调整哈希映射的大小

调整哈希映射的大小
EN

Stack Overflow用户
提问于 2019-02-22 01:43:48
回答 1查看 0关注 0票数 0

我需要自己的Hash map实现而不使用任何库; 我的键是整数,我的散列是%大小。我不知道会添加多少元素,所以我需要能够调整大小(处理碰撞我正在使用二次探测)。但是,如果我调整它的大小,它将使哈希(%size)出错。我一直在看这些,但我仍然不明白这是如何解决这个问题的。

EN

回答 1

Stack Overflow用户

发布于 2019-02-22 11:06:44

我建议使用Paul Larson推广的算法,算法一次拆分一个桶。它的工作原理如下:

您可以确定平均每个哈希桶的条目数。您可以跟踪您拥有的条目数以及您拥有的存储区数量。

假设你有四个水桶。您将每个元素放在一个桶中,方法是使用散列模式4。

现在说每个哈希桶的条目超出了你想要的平均值。你现在从四个桶增加到五个。你这样做如下:

  1. 你添加了第五个桶。它开始是空的。
  2. 您将算法从更改hash%4(hash % 8) % 5
  3. 这增加了第五个桶。
  4. 您重新搜索第一个存储桶中的所有条目,因为它们中的一半现在需要进入存储桶5.(这通常是一个固定成本,因为您的每个存储桶平均值是一个常量。

这会让你的水桶不均匀。铲斗1和铲斗5的铲斗数量将是铲斗2,3和4的一半。但是当你获得第8个铲斗时,它们将会再次出现。

为简单起见,您可以将每个存储桶实现为链接列表。

另一种方法是很少重新进行重新散列,并重新进行每一个条目的重新散列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档