哈希表的查找时间总是 O(n) ?

2024-01-12

我不明白如果存储桶的数量恒定,那么哈希表如何进行恒定时间查找。假设我们有 100 个桶和 1,000,000 个元素。这显然是 O(n) 查找,这就是理解非常大的 n 值时事物的行为方式的复杂性所在。因此,哈希表永远不是常量查找,它始终是 O(n) 查找。

为什么人们说平均查找时间为 O(1),而最坏情况下查找时间仅为 O(n)?


使用哈希的目的是能够像数组一样直接对表进行索引。在理想情况下,每个桶只有一个项目,我们可以轻松实现 O(1)。

实际的哈希表的存储桶数量将多于其元素数量,因此每个存储桶仅包含一个元素的可能性很高。如果插入表中的元素数量过多,则将调整表的大小以增加存储桶的数量。

总是有可能每个元素都具有相同的哈希值,或者所有活动哈希值将被分配到同一个存储桶;在这种情况下,查找时间确实是 O(n)。但良好的哈希表实现将被设计为最大限度地减少发生这种情况的可能性。

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

哈希表的查找时间总是 O(n) ? 的相关文章

  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • 给定一个具有多个重复条目的数组,找到一个重复条目 O(N) 时间和常数空间

    我们得到了一个大小为 N 的数组 其中包含 0 到 N 2 范围内的整数 包括 0 和 N 2 该数组可以有多个重复的条目 我们需要在 O N 时间和常量空间中找到重复条目之一 我正在考虑取数组中所有条目的乘积和总和 以及 0 到 N 2
  • Florian 的 Grisu2 算法如何工作?

    我遇到了一个关于将 double 转换为 ascii 的问题 经过搜索 我得到了 Florian 的论文 使用整数快速准确地打印浮点数 http www cs tufts edu nr cs257 archive florian loits
  • 在 O(n) 时间内排序?

    我被这个问题困扰了 2周 知道如何处理它吗 令 L 为 n 个不同整数的列表 假设 L 的 x 的元素在 1 750 范围内 设计线性排序算法对 L 的元素进行排序 我已经尝试过插入排序 但我不确定我的方法是否正确 Construct an
  • 每个术语出现的次数

    我得到了一个数组a n 2 where n can be 10 5最大时有n个科目和n个学生 全部编号为 1 2 n a i 0 and a i 1 1 lt i lt n 表示在第 i 个科目中 所有来自a i 0 to a i 1 通过
  • 照片马赛克算法。如何在给定基本图像和瓷砖列表的情况下创建马赛克照片?

    Hy 我要做的是创建一个程序 使用 C 或 C 它将 24 位 像素位图和图像集合作为输入 我必须创建一个马赛克图像 类似于使用库的输入图像给定的图像 创建与输入类似的马赛克照片 到目前为止 我可以访问输入的图像像素及其颜色 但我有点卡住了
  • 有没有时间复杂度为O(N)的排序算法?

    大多数排序算法的复杂度为 O NN 或 O NlogN 来实现结果 但是 对于特定的输入集 有些算法的复杂度为 O N 我想知道是否有一种排序算法在所有情况下都具有 O N 的复杂度 如果您只能比较 检查两个项目是否为 正在排序的值 那么您
  • 平铺单纯形噪声?

    我 作为业余爱好者 对伪随机噪声生成很感兴趣 特别是 Perlin 和 Simplex 算法 Simplex 的优点是速度 尤其是在更高的维度上 但 Perlin 可以相对容易地平铺 我想知道是否有人知道平铺单纯形算法 固定维度就好 泛型更
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出
  • 查找其索引的乘积可被另一个数字 X 整除的对的数​​量

    给定一个数组和某个值 X 找到满足以下条件的对的数量 i lt j a i a j and i j X 0 Array size lt 10 5 我想这个问题有一段时间了 但只能想出蛮力解决方案 通过检查所有对 这显然会超时 O N 2 t
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • 使用 A 星查找路径的启发式函数

    I am trying to find a optimal solution for the following problem 每个节点内表示的数字表示为 x y 一个节点的相邻节点总是有一个y值为 当前节点 y 值 1 更改的成本为 1
  • 在矩阵/位图中查找质量簇

    这是此处发布的问题的延续 在 2D 位图上查找质心 https stackoverflow com questions 408358 finding the center of mass on a 2d bitmap正如给出的例子 它讨论了
  • 优化重叠矩形的绘制

    我有很多矩形 有些与其他矩形重叠 每个矩形都有一个绝对 z 顺序和一个colour 每个 矩形 实际上是粒子效果 网格或纹理的轴对齐边界框 并且可能是半透明的 但只要您不尝试剔除其他矩形后面的矩形 就更容易抽象地思考彩色矩形 所以我将在问题
  • 2D形状识别与解析算法

    我正在寻找一种算法 用于从给定的一组 x y 点检测简单形状 如矩形 三角形 正方形和圆形 我还在寻找一种方法 一旦检测到 将路径转换为更干净的形状 我已经查遍了互联网 但没有找到任何 简单 的方法 几乎所有这些对于我的简单实现来说都是高级
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 寻找簇的中心

    我有以下问题 进行抽象以找出关键问题 我有 10 个点 每个点与其他点有一定距离 我想要 能够找到簇的中心 即与其他点的成对距离最小的点 令 p j p k 表示点 j 和 k 之间的成对距离p i 是簇的中心点 iff p i s t m

随机推荐

  • 在 R 版本 3.0.2 上安装 Rtools

    我已经安装了devtools对于 R 但是当我使用以下命令调用库时 library devtools 我得到以下输出 WARNING Rtools is required to build R packages but is not cur
  • 使用vba将文件从一个文件夹复制到另一个文件夹

    我知道有一些关于这个主题的类似帖子 但是 我有一个与我在这里看到的所有代码 在谈论这个主题时 不同的代码 我收到的错误是找不到该文件 但这是不可能的 因为我正在 fso CopyFile 中用作 SOURCE 的同一文件夹中搜索文件 所以我
  • C# Winform 关闭程序后进程仍在Windows任务列表管理器中

    为什么关闭程序后该进程仍在Windows任务列表管理器中 我使用登录Form cs STAThread static void Main Application EnableVisualStyles Application SetCompa
  • 我可以从同一解决方案中的不同项目访问另一个项目的嵌入式资源吗?

    我有一个 xml 文件 它作为 Project A 中的嵌入资源 我想从引用 Project A 的 Project B 访问此嵌入资源 基本上 Project B 由单元测试组成 我使用 ReSharper 运行它们 当我在 Projec
  • Python可写缓冲区/内存视图到数组/字节数组/ctypes字符串缓冲区

    Problem 固定大小记录的二进制数据 想要使用struct unpack from和struct pack into来操作二进制数据 不需要数据副本 想要内存中的多个视图来简单地抵消计算等 数据可以位于 array array byte
  • scp通过ssh隧道打开

    我想从已与服务器打开反向隧道的计算机发送文件 反向隧道将计算机上的端口 22 与服务器上的端口 2222 连接 autossh M 0 q f N o ServerAliveInterval 120 o ServerAliveCountMa
  • @AttributeOverride 不适用于继承

    我正在尝试更改子类表中的列名 但 AttributeOverride 注释并未更改它 Entity Table name emp Inheritance strategy InheritanceType TABLE PER CLASS pu
  • 如何删除单击 uib-accordion-heading 时出现的蓝色边框?

    我已尝试以下问题中提出的解决方案但无济于事 从 Chrome 中的 css 自定义样式按钮中删除蓝色边框 https stackoverflow com questions 20340138 remove blue border from
  • 使用 rsync+ssh+公钥作为与 ssh 密钥所有者不同的用户同步本地和远程目录

    目标是通过 ssh 同步本地和远程文件夹 我当前的用户是user1 并且我通过 ssh 对服务器进行了无密码访问设置server1 我想将本地文件夹与上的文件夹同步server1借助于rsync公用事业 通常我会运行 rsync rtvz
  • MergeLatest 的默认值

    官方文档 https doc akka io docs akka current stream operators Source or Flow mergeLatest html of MergeLatest状态 MergeLatest 为
  • QueryPerformanceCounter 和溢出

    我正在使用 QueryPerformanceCounter 在我的应用程序中进行一些计时 然而 运行几天后 该应用程序似乎停止正常运行 如果我只是重新启动应用程序 它就会再次开始工作 这让我相信我的计时代码存在溢出问题 Author Rya
  • 将 CopyPlugin 添加到 next.config.js

    我想将以下内容添加到我的 webpack 配置中 module exports otherConfig plugins new CopyPlugin from node modules pdftron webviewer public to
  • 将字符串转换为数组 - PostgreSQL

    我在表中有一列存储用逗号分隔的名称 例如 Mel s Hou Rest Mel s Lad Rest 我需要的是将这个字符串转换为以逗号分隔的数组 我需要的查询是 SELECT home location subs state FROM c
  • 如果有焦点组件,则不会执行场景的 JavaFX 按键事件

    我有一段代码可以在按下某个键时执行某些功能 scene setOnKeyPressed event gt if event getCode KeyCode F1 doSomething 它可以工作 但前提是没有焦点组件 例如按钮或文本字段
  • RxJava doOnError 与 onError

    我尝试使用以下代码 initLocalSettingsIfNeed andThen initGlobalSettingsIfNeed configuration doOnComplete callback onSuccess doOnErr
  • Android应用程序图标随运行时变化

    在我的应用程序中 我想显示应用程序的不同图标 应根据场景进行更改 例如 它将标记任务完成的剩余天数 在 Android 菜单上 此图标将显示剩余天数 如果有人对此有任何想法 我将不胜感激 谢谢 实际上有很多方法可以实现这一目标 如果你最近注
  • 来自 SVN 存储库的 Maven 依赖项

    使用maven 2 有没有办法列出对另一个maven项目的依赖关系 该项目位于不同的SVN服务器上但不在maven存储库上 理想情况下 应该可以编译和运行主项目 而无需手动签出和构建依赖项 使用maven 2 有没有办法列出对另一个mave
  • 从存储过程批量复制

    我的数据库中有表 A B 和 C 我必须将A和B得到的结果放入表C中 目前 我有一个 SP 它将 A 和 B 的结果返回到 C 应用程序 该结果将使用 System Data SqlClient SqlBulkCopy 复制到表 C 中 优
  • 如何创建在 Visual Studio 中使用的新语言

    我想编写一种新的模板语言 并且希望 Visual Studio 支持 它 我需要知道的是 我如何解析我的新语言 给定我的新模板语言中的一些代码 如何将其转换为 HTML 现在我正在使用正则表达式逐个标记地解析它 但我认为随着语言变得更加复杂
  • 哈希表的查找时间总是 O(n) ?

    我不明白如果存储桶的数量恒定 那么哈希表如何进行恒定时间查找 假设我们有 100 个桶和 1 000 000 个元素 这显然是 O n 查找 这就是理解非常大的 n 值时事物的行为方式的复杂性所在 因此 哈希表永远不是常量查找 它始终是 O