algorithm - 使用散列搜索

标签 algorithm hash

假设我们有一个包含 10 个桶的哈希表,符号 S1 到 S7 最初是使用线性探测的哈希函数输入的。搜索不存在的项目所需的最大比较次数是多少? HashMap 可以解释为:

索引 KEY

  • 0 - - S7

  • 1 - - S1

  • 2 - - 空

  • 3 - - S4

  • 4 - - S2

  • 5 - - 空

  • 6 - - S5

  • 7 - - 空

  • 8 - - S6

  • 9 - - S3

假设我想找到一个元素 S8(显然不存在)..在计算 S8 的散列函数时假设它跳转到索引 8。找不到索引 8 处的元素,通过线性探测它检查下一个索引等等 .. 现在,比较的次数应该是数组的总长度,因为通过线性探测,它应该尝试查看每个索引...但实际答案是 5! :|请任何人解释!!

最佳答案

线性探测将寻找一个元素,直到它找到一个 哈希桶。在这种情况下,它将检查 8、9、0、1 和 2;在 2 它将停止,因为桶是空的。

请注意,删除是通过用特殊的“墓碑”值替换桶来处理的,该值将元素标记为已删除但避免破坏线性探测链。因此,线性探针在元素为空的情况下仍能正常工作。

关于algorithm - 使用散列搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12721443/

相关文章:

algorithm - 字典顺序排列如何在算法上工作?

JavaScript 按数字排序

java - 用于实现通用接口(interface)的 2 个以上类的高级 Java 习惯用法

algorithm - 非递归归并排序

匹配给定 n*m 矩阵中的序列的算法

javascript - 如何使用javascript刷新网页?

php - 什么是片段 URL 以及为什么要使用它们?

node.js - NodeJS : Crypto - Why do I get the same hash no matter on the input?

angularjs - 如何从 url Angular 应用程序中删除哈希值?

C# 存储数字的安全方式?