哈希表的时间复杂度

2023-11-25

我对哈希表的时间复杂度感到困惑,很多文章都说它们是“摊销 O(1)”而不是真正的 O(1),这在实际应用中意味着什么。哈希表中操作的平均时间复杂度是多少(在实际实现中而不是理论上),为什么这些操作不是真正的 O(1)?


不可能提前知道哈希函数会发生多少次冲突,以及需要调整大小之类的事情。这会给哈希表的性能增加不可预测性,使其不是真正的 O(1)。然而,几乎所有哈希表实现都在大量、大量、绝大多数插入上提供 O(1)。这与数组插入相同 - 除非需要调整大小,否则为 O(1),在这种情况下为 O(n),加上碰撞不确定性。

实际上,哈希冲突非常罕见,您需要担心这些细节的唯一情况是当您的特定代码必须运行的时间窗口非常紧张时。对于几乎每个用例,哈希表的复杂度都是 O(1)。比 O(1) 插入更令人印象深刻的是 O(1) 查找。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哈希表的时间复杂度 的相关文章

  • Powershell:使用哈希表替换字符串

    好的 我已经设置了一个哈希表 其中名称是要替换的内容 键是要替换的内容 如下所示 r dog canine cat feline eric eric cartman 接下来我应该做什么 我试过这个 Get Content C scripts
  • 碰撞解决:二次探测与单独链接

    好的 我一直在对哈希表和不同的冲突解决问题进行一些实验 我试图找出哪个更有效地进行查找 即使用单独的链接或二次探测来解决冲突的哈希表 我的结果表明 即使对于较小的负载因子 例如 0 4 或 0 2 单独链接也比二次探测更快 是这种情况还是我
  • 按哈希表中的值排序 - Ruby

    我有以下国家 地区哈希值 COUNTRIES Albania gt AL Austria gt AT Belgium gt BE Bulgaria gt BG 现在 当我输出散列时 值不是按字母顺序排列的 AL AT BE BG 而是按无意
  • 给定一组线段,找到面积最大的矩形

    想象一下我给了你一组如下形式的线段 x1 y1 x2 y2 我们有两个点定义了一条线段 就我们的目的而言 该部分始终是水平或垂直的 我想找到由线段包围的任何矩形的最大面积 例如 当给定以下线段集时 结果应为绿色阴影区域的面积 到目前为止 我
  • Java 哈希表与对象引用的问题

    我有一个哈希表 例如 HashTable ht 1 1 2 1 3 1 现在 我像 Integer foo Integer 1 一样实现它 并像这样声明哈希表 HashTable ht foo foo 2 foo 3 foo 现在 据我了解
  • Character.getNumericvalue in char 频率表

    int buildCharFreqTable string phrase int tab new int Character getNumericValue z Character getNumericValue a 1 for char
  • 克隆二叉树的时间复杂度

    我想知道克隆二叉树的代码的时间复杂度是否为 O n 如果是 O n 你能解释一下为什么吗 如果没有 你能建议一种时间复杂度为 O n 的方法吗 public TreeNode cloneTree TreeNode root if root
  • 如何将两个已排序数组合并为一个已排序数组? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是我在采访中被问到的问题 这是我提供的解决方案 public static int merge int a int b int an
  • 该算法的大 O 复杂度是多少?

    我有一个在下面编写的函数 这个函数本质上是一个归并排序 public static long nlgn double nums if nums length gt 1 int elementsInA1 nums length 2 int e
  • 从哈希表中删除一个值的成本是多少?

    现在我有一个问题 当我们在插入过程中使用线性探测时 有人问我从哈希表中删除值的成本 通过阅读互联网上的各种内容 我发现它必须与负载因子有关 虽然我不确定 但我读到了负载因数与所需探头数量之间的关系 探头数量 1 1 LF 所以我相信成本必须
  • gsub的时间复杂度

    一根长绳子s仅包含0 and 1 这段 Ruby 代码计算了有多少个1有 s gsub 1 count Big O 表示法的时间复杂度是多少 有没有一个工具可以进行计算 据我所知 没有一个通用工具可以计算任意代码的 Big O 表示法 这将
  • 面临减法时的算法复杂性

    我必须简化以下公式才能获得算法的时间复杂度 n 2 n 3 是否有任何适用的规则可以让我进一步简化这个表达式为更 常见 的 n 2 或类似的东西 我假设这就是结果 可能是错误的 我根本不知道如何处理这里的减法 通常 如果两个值相加 您只考虑
  • Big O 用于有限、固定大小的可能值集

    这个问题 https stackoverflow com questions 12305028 java what is the best way to find first duplicate character in a string引
  • O(mn) 比 O((m+n)^2) 更好吗?

    算法的输入是m and n 我的算法的时间复杂度是O mn 我有一个时间复杂度为的基准算法O m n 我的实现在时间复杂度方面是否优于基准 许多评论者和回答者希望只考虑以下情况 m n或者至少当它们通过一个常数因子相关时 这不是它的工作原理
  • 两个非嵌套循环的大 O 表示法

    对于两个非嵌套的 for 循环 大 O 表示法是什么 Example for int i 0 i
  • 对 Python 中的嵌套字典进行排序

    我有以下字典 var a Black grams 1906 price 2 05 Blue grams 9526 price 22 88 Gold grams 194 price 8 24 Magenta grams 6035 price
  • 在 Python 中进行模糊键查找的最佳方法?

    我遇到一个问题 我需要在哈希映射中进行模糊查找 即返回与最接近查询的键相对应的值 在我的例子中是通过 Levenshtein 距离测量的 我目前的方法是子类化dict使用特殊的查找方法计算所有键的编辑距离 然后返回得分最低的键的值 基本上是
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网
  • 三个嵌套for循环的渐近分析

    我想计算这个嵌套 for 循环的 theta 复杂度 for int i 0 i lt n i for int j 0 j lt i j for int k 0 k lt j k statement 我会说它是 n 3 但我认为这是不正确的
  • 哈希表到 Lwuit 表

    Hashtable iHashtable new Hashtable iHashtable put Name Jhon iHashtable put Address India Enumeration iEnumeration iHasht

随机推荐

  • 从Linux内核访问物理内存

    我们可以通过一些内核代码访问任何物理内存吗 因为 我编写了一个只有 init module 和 exit module 的设备驱动程序 代码如下 int init module void unsigned char p unsigned c
  • Font Awesome 在 Firefox 和 IE 中不工作

    我遇到了 WordPress 网站中包含的很棒的字体问题 在 Firefox 和 IE 中 图标根本不会显示 但在 Chrome 和 Safari 中它工作正常 我找到了 解决方案 说我需要一个包含某些内容的 htaccess 来为这些浏览
  • 字典列表到xlwt

    我有一个清单字典我想使用它将其转换为Excelxlwt 我是 xlwt 的新手 你能帮助我吗 我使用它作为接收 dict 列表并将其转换为 excel 然后返回的函数 我有这个字典列表 id u 1 name u Jeff id u 2 n
  • 有没有办法在 Tkinter 中使用功能区工具栏?

    我还没有决定我的下一个项目使用什么语言和工具 我喜欢使用 python 但我想实现功能区工具栏 Tk 中已经完成了一些工作 http www ellogon org petasis bibliography Tcl2010 TkRibbon
  • 如何将多个列“内爆”(去规范化/连接)为单个列?

    我有一个查询 输出如下 F KEY EV OTHER COLUMN 100 1 100 2 150 2 100 3 150 4 我确信我已经看到了一个聚合函数可以将其转变为 使用GROUP BY F KEY 变成这样的东西
  • 将 grid.arrange() 绘图保存到文件

    我正在尝试使用绘制多个图ggplot2 使用排列它们grid arrange 由于我设法找到了描述我所遇到的确切问题的人 因此我引用了问题描述link 当我使用ggsave after grid arrange i e grid arran
  • 具有相同路由和相同组件的两个路径 - Vue js

    我有两条具有相同组件的路径 如下所示 loc host 应匹配 usa host loc sublocation host 应匹配 usa washington host 如何在 vue js 中使用单个命名路由来实现这一点 您可以使用路径
  • Java:如何在属性文件中写入“阿拉伯语”?

    我想在消息资源包 属性 文件中写入 阿拉伯语 但是当我尝试保存它时 出现此错误 保存无法完成 某些字符无法使用 ISO 85591 1 字符编码进行映射 更改编码或删除字符 有人可以指导一下吗 我想写 global username 我应该
  • 如何记录 C# dll

    如何编写一个类 以便在其他项目中引用该 dll 的人可以看到属性和方法描述 Description My age in years attribute public int Age get return 0 set 不起作用 也不起作用
  • bash 脚本在获取时会产生不同的结果

    您能帮助我吗 为什么这个脚本在源代码 甚至直接在控制台上 时有效 而在脚本上不起作用 我已经检查过 无论如何我在 bin 中使用相同的 bash 并且始终使用 4 4 19 1 release 用 BASH VERSION 此外 我尝试删除
  • 如何在 Dart 命令行 HttpClient 中执行 POST

    我正在努力组装一个能够执行 http POST 的 Dart 命令行客户端 我知道我不能使用 dart html 库而必须使用 dart io 开头看起来很简单 HttpClient client new HttpClient client
  • 自动将大括号添加到 java 代码库中的所有 if/else/for/while 等

    我想减少大型遗留java代码库中声纳违规的数量 似乎 快速获胜 是将所有这些条件语句更新为具有大括号 这似乎是一件容易做的事情 我不明白为什么它不能轻易自动化 有人知道可以执行这样的批量操作的工具吗 或者为什么在我自己花时间写一些东西之前做
  • 使用 sas 获取数据步骤中的行号

    有没有办法进行过度分区来获取 sas 上的行号 在 sql 中我会这样 Select region company ROW NUMBER OVER PARTITION BY region ORDER BY Name From company
  • 更改 UIAlertController 中的标题颜色

    我有两个按钮 但我只想将其中一个更改为红色 当我使用下面的功能时它全部改变为red 我只想改变一个按钮的颜色 我该怎么做 alertController view tintColor UIColor redColor let alertCo
  • C++ 隐式转换运算符优先级

    编辑 根据迈克 西摩的评论 我替换了operator std string const with operator char const 并相应地改变了实施 这允许隐式转换 但是 由于某种原因 unsigned long int 运算符优先
  • 超级构造函数如果没有超类?

    我发现了一个这样的类 public class Computer implements Serializable private static final long serialVersionUID 1L public Computer s
  • WinForms 数据绑定 - 绑定到列表中的对象

    我需要一些关于 WinForms 数据绑定的帮助 指导 但我似乎无法让 Google 帮助我解决这个问题 这是我的场景 考虑以下与我需要的类似的类 public class Car public string Name get set pu
  • WPF:文本框文本未更新

    我有一个正在使用的用户控件DataTemplate this UserControl包含一个TextBox与Value属性 声明为DependencyProperty of my UserControl 在数据模板中我绑定了这个Value财
  • 像在画布上绘制一样对路径进行动画处理

    我是 WPF 的新手 请指导我解决这个问题的正确方向 我构建了一个 WPF 应用程序 其中包含路线图视图控件的所有功能 IE 路线图可以使用鼠标 键盘和提供的控件进行放大 缩小 向各个方向平移 我已将道路映射为使用 Expression B
  • 哈希表的时间复杂度

    我对哈希表的时间复杂度感到困惑 很多文章都说它们是 摊销 O 1 而不是真正的 O 1 这在实际应用中意味着什么 哈希表中操作的平均时间复杂度是多少 在实际实现中而不是理论上 为什么这些操作不是真正的 O 1 不可能提前知道哈希函数会发生多