9.19做题资料:哈希表查找时间复杂度分析

好的,我用一个简单的比喻来解释,就像你在学校里找座位一样!


1. 哈希表是什么?

想象一个教室里有好多桌子(这些桌子就是哈希表)。每张桌子都有一个编号(比如1号桌、2号桌、3号桌……)。老师规定:每个同学必须坐在指定编号的桌子上。


2. 键值对是什么?

现在,每个同学都有一个学号(这就是“键”),并且每个同学都带着自己的书包(这就是“值”)。
所以,“键值对” 就是:学号(键) + 书包(值)
哈希表就是用来存放这些“键值对”的——也就是让每个同学(键)坐在自己的桌子(值)上。


3. 哈希函数是什么?

老师规定了一个规则:你的学号除以教室的总桌数,余数是几,你就坐在几号桌
比如:

  • 教室有10张桌子(编号0到9)。
  • 你的学号是15,那么 15 ÷ 10 = 1 余 5,所以你就坐在5号桌。
    这个规则就是哈希函数——它告诉你应该坐在哪里。

4. 冲突是什么?

有时候,两个同学的学号算出来会坐在同一张桌子上!
比如:学号5和学号15,除以10余数都是5,都要坐5号桌。
但一张桌子只能坐一个人呀!这就发生了冲突


5. 开放地址法(解决冲突)

老师规定:如果5号桌已经有人了,那你就往后找,坐下一张空桌(比如6号、7号……直到找到空桌)。
这就是开放地址法——如果本来该坐的位置被人占了,就按照规则找下一个空位。


6. 装载因子(α)是什么?

装载因子 = 学生人数 / 桌子总数
比如:教室有10张桌子,现在坐了7个学生,那么装载因子 α = 7/10 = 0.7。
α越大,说明教室越满(桌子快坐满了);α越小,说明教室越空。


7. 最坏情况下查找一个元素的时间复杂度

现在,有一个新同学来找人(查找):他想知道学号15的同学坐在哪里。

  • 他先算了一下:15÷10=1余5,所以应该去5号桌找。
  • 但5号桌坐的是学号5的同学,不是15!
  • 于是他又去6号桌找,也不是;
  • 再去7号桌找,还不是……
    最坏的情况:他可能找遍了教室里所有的桌子(10张),才发现学号15的同学坐在最后一张桌,或者根本不在教室(没来上学)。

所以,最坏情况下,他需要找遍所有桌子
教室有10张桌子,但只有7个学生(α=0.7),他最多要找10次。
如果教室有100张桌子(但只有70个学生,α=0.7),他最坏要找100次。

注意:桌子总数(m)和学生人数(n)有关系:m = n / α。
比如:n=70,α=0.7,那么m=70/0.7=100张桌子。
所以,最坏情况要找O(m) = O(n/α)次。
但由于α是常数(比如0.7),所以O(n/α)可以简化为O(n)。

也就是说:最坏情况下,找一个人需要找的次数和教室里的桌子总数成正比,而桌子总数又和学生人数差不多(因为α是常数),所以最坏情况找人的时间和小班里的学生人数n成正比
因此,时间复杂度是O(n)


✅ 总结答案:

最坏情况下查找一个元素的时间复杂度是 O(n)(也就是找人的时间和小班里的人数n成正比)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF2143F Increasing Xor

我咋天天忘。还怎么学 OI 啊。 题意 给定长度为 \(n\) 的序列 \(a\),\(q\) 次询问给定 \(l,r\),每次查询提取出 \([l,r]\) 这段子区间,在这段子区间中你能执行任意次操作,每次操作任选 \(l\le i\le j\le r\) 然后 …

提到链接,你能想到什么

linux中的链接文件和虚拟机的克隆技术一.链接文件 在了解链接文件两种类型之前,必须先了解的知识: 文件在Linux中被分成两部分:数据(data block)和文件元数据(inode) inode与block 每个文件都有一个 inode(索引节…

实用指南:容器逃逸漏洞

实用指南:容器逃逸漏洞pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

实用指南:容器逃逸漏洞

实用指南:容器逃逸漏洞pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

深入解析:卷对卷(Roll-to-Roll,R2R)技术的应用领域和技术进展

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:卷对卷(Roll-to-Roll,R2R)技术的应用领域和技术进展

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

三种方式处理SpringBoot全局异常

在SpringBoot开发web项目时,异常处理是必不可少的一部分。在应用中,异常可能出现在任何地方,例如在控制层,服务层,数据访问层等等。如果不对异常进行处理可能会导致应用崩溃或者出现未知的错误。因此对于异常的处…

解题记录说是 | P3695 CYaRon!语

小模拟link 起因 闲的没事找模拟做,发现这个部分分的档次很多,而且好想挺好做,就做了。 是分着部分分做的,而且完全就是那种苦(封装各种实现)尽甘(飞速写完 ihu hor while)来的感觉,很爽的。 code goes first…

分享一个极度精简的绿色的 五笔输入法

这个输入法是本人修改过的 柚子输入法,极度精简,绿色无需安装,释放之后即可使用. 功能说明请看 压缩包的说明文件. 通过网盘分享的文件:youziIME2025-9-19.rar 链接: 百度网盘 如果需要修改功能,你需要懂一点Auto…

[GDKOI2023 提高组] 游戏 题解

一种比较简短的写法: 拉出直径,再在直径的每一个点上跑一下最长链,为 $ mx_i$ 这里设三点的路径交点为 \(rt\)。 假设 \(rt \rightarrow u,v,w\) 的距离为 \(dis1,dis2,dis3\) 。 容易知道 \(dis1 = (x+y-z)/2,dis2…

CSP-J/S 2025 游记

突然发现今年忘记写游记了…… [2025.6.30,2025.8.1) 中考。 [2025.8.1,2025.8.31] 暑假集训 15 天,一天比赛一天专题。早上 8:00 到机房训到 12:00 然后和高三抢饭,下午 14:00-17:00 继续搞,晚上 19:00-22:00。只有…

2025.9.19 计数dp小记

[CQOI2011] 放棋子 本题有一个性质,棋子间互不关联,又因为数据范围小,很容易 \(dp\) 记 \(f_{p,i,j}\) 表示考虑前 \(p\) 种颜色,放了 \(i\) 行 \(j\) 列的方案数 则枚举 \(p\) 放了几行几列,有 \[f_{p,i,j} = \s…

实用指南:AI推理范式:从CoT到ReAct再到ToT的进化之路

实用指南:AI推理范式:从CoT到ReAct再到ToT的进化之路pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

sign up - Gon

如果注册github时出现 Unable to verify your captcha response. Please visit https://docs.github.com/articles/troubleshooting-connectivity-problems/#troubleshooting-the-captcha for troubleshooting informa…

ctfshow web入门 信息搜集

有些题目会了就没写了,只记录一下自己不会写的题目,不过信息搜集还是很重要的ctfshow web3(自带网络工具包查看数据)查看源码什么也没有扫目录也什么都没有只能说信息收集能力还欠佳, 我们可以先尝试使用浏览器自带…

完整教程:数据结构:单链表的应用(力扣算法题)第二章

完整教程:数据结构:单链表的应用(力扣算法题)第二章pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

CF2039E Shohag Loves Inversions

CF2039E Shohag Loves Inversions 题意: 给你一个数列,初始数列为 $ a = [0, 1] $ ,现在重复进行以下操作若干次:将当前数组中逆序对个数 \(k\) 插入当前数组中任意一个位置,包括开头或者结尾。其中 \(n\le 1e6\)…

深入解析:sqlite3的加解密全过程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

U522155 板垣 カノエ is WATCHING YOU std

U522155 板垣 カノエ is WATCHING YOU #include<bits/stdc++.h> #define int long long #define add(a,b) to[++ tot] = b,nxt[tot] = h[a],h[a] = tot #define con putchar_unlocked( ) #define ent putchar_u…

ctfshow web

ctfshow里面免费的web题不写白不写ctf.show_红包题第二弹1打开题目显示这样 看看源码有无提示可以看到提示了cmd参数,那我们就随便传点东西看看会有什么回显又是代码审计,可以看到大小写字母过滤后只有小写p可以使用…