单独的链接哈希表 - 何时停止查看

时间:2016-09-15 06:04:44

标签: algorithm data-structures hash hashmap

关于哈希表的快速问题。 我目前正在实现一个哈希表 使用单独链接的组合 和开放寻址,限制长度 每个桶的链表到一定长度。

但是,我无法想出有效获取/删除的方法 使用这个哈希表结构,我想知道我是否是盲目愚蠢的 或者如果有人在此之前处理过类似的问题。

如果我尝试不断使用冲突解决方案进行探测,我可能会永远发生,并且永远不会发现密钥是否在表中。这是因为大多数探测方法都不会覆盖每个桶,我宁愿不使用线性探测。

因为大多数探测方法都不会涵盖每个存储桶,并且跟踪您所查看的存储桶是很昂贵的,如果存储桶已清空但探测路径中的后续存储桶不是,则算法不能简单地停止一旦遇到一个空桶。

我非常感谢有关这个问题的任何想法。

谢谢!

1 个答案:

答案 0 :(得分:0)

在无限制碰撞等场景中,我们通常倾向于使用:

  • 线性探测:每次跳n次,其中n是素数> = 7,为什么要素数?使用素数的90%hastables通常遍历表格中的每个单元格,因此遍历整个表格而不是仅仅跳过每个单元格。
  • poly probling:每次跳转n次,其中n使用多项式函数重新计算,例如f(x)= x ^ 2 + 2x + 1,为什么?这会给每个单元格提供不同的结果,而不是完全基于单元格中的值。