一、时间复杂度基础
- 时间复杂度是衡量算法效率的指标,用大O表示法(如O(1)、O(n)、O(n^2))。数值越小,算法效率越高。
- O(1):无循环的简单操作,如赋值、基本运算、数组下标访问。
- O(n):单层循环操作,时间消耗随n线性增长。
- O(n^2):嵌套双层循环操作,时间消耗随n平方增长。
二、哈希表底层结构与查找效率
- 哈希表底层物理结构是数组,利用数组下标访问的O(1)特性,实现哈希表查找的高效性。
三、哈希存储与哈希函数
- 存储数据时,通过**哈希函数(取模运算)**将数据映射到数组下标。例如数组长度为8时,数字5直接存在下标5的位置;数字8通过8 \% 8 = 0,存在下标0的位置。
四、哈希冲突
- 定义:不同数据经哈希函数映射后得到相同下标,导致冲突。如8、16、32对8取模都得0。
- 解决方法(链地址法):将哈希冲突的元素串联成链表,哈希表升级为链表数组(数组每个元素是链表头指针)。
五、负载因子与Rehash
- 负载因子:公式为 元素个数 / 数组长度 。当负载因子过大(如大于5),哈希表会出现大量长链表,查找效率退化。
- Rehash(重新哈希):数组扩容为原来的2倍,所有元素重新通过哈希函数映射,分散链表元素,避免长链表。
- 渐进式Rehash:避免一次性Rehash导致的性能波动,将Rehash过程分散到程序运行的多个阶段,逐步完成元素重新映射。
六、哈希表长度的优化
- 哈希表长度设计为2的幂,利用**位运算(与运算)**优化取模操作。因为x \% 2^n等价于x \& (2^n - 1),位运算效率高于取模运算。
面试常见问题之剖析哈希表
张小明
前端开发工程师
准确性、成本与性能的平衡 - 基于Microsoft Foundry平台的模型微调实践【线上直播】
AI Agent 工具调用准确率上不去?Azure 云平台训练部署成本失控?想在准确性、成本与性能间找到最优解?1月23日晚 20:00,算泥社区「开发者之声」栏目特邀 Azure AI 认证工程师、微软认证培训专家(MCT)——Chr…
Comsol颗粒的随机分布
comsol颗粒随机分布在COMSOL里玩随机颗粒分布,本质上是个"既要又要"的游戏——既要保证颗粒位置足够随机,又要避免它们像奶茶里的珍珠一样挤成一团。今天咱们直接上硬货,用代码暴力生成随机颗粒坐标,顺便聊聊怎么在COMS…
全网最全9个AI论文网站,MBA学生轻松搞定毕业论文!
全网最全9个AI论文网站,MBA学生轻松搞定毕业论文! AI 工具如何成为论文写作的得力助手 在当前学术研究日益数字化的趋势下,MBA 学生面临论文写作的压力也愈发明显。无论是选题、开题还是撰写与降重,每一步都充满挑战。而 AI 工具的…
IVT 映像向量表, DCD 设备配置数据
一、IVT(Image Vector Table,映像向量表)作用:ROM的"导航地图",告诉ROM:程序入口在哪(entry)硬件配置在哪(指向DCD)镜像信息在哪(指向B…
C 语言 字符相关函数学习
C语言的字符相关的函数很多很杂,,有些经常使用,有的就不怎么听说,本文将记录我学习到的部分函数。一、字符分类函数这里的函数都有种相似的面貌,都是 is 分类依据 ,包含在头文件 <ctype.h>例如 …
用免费域名,搭建一个自己的临时邮箱服务保护您的真实邮箱地址,远离垃圾邮件和不必要的订阅
用免费域名,搭建一个自己的临时邮箱服务保护您的真实邮箱地址,远离垃圾邮件和不必要的订阅 前言 分享一个临时邮箱服务MoeMail,搭建一个自己的临时邮箱服务保护您的真实邮箱地址,远离垃圾邮件和不必要的订阅,这个项目目…