news 2026/4/17 19:24:06

详解哈希表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
详解哈希表

哈希表概念

哈希表是一种基于数组 + 哈希函数实现的数据结构,用于快速存储和查找数据。它的核心思想是:

通过 key 来快速找到对应的 value

查找操作在理想情况下可以达到O(1)的时间复杂度。

哈希表也叫散列表,核心组成部分包括:

  1. 哈希函数 (Hash Function)

    • 将 key 映射成数组的索引 (0 到 N-1)

    • 公式:

      index=hash(key)%table_size
  2. 数组

    • 存放数据的容器,每个索引称为一个

  3. 冲突解决策略

    • 不同 key 可能映射到相同的索引 →哈希冲突

    • 常见策略:

      • 拉链法:每个桶用链表存储所有冲突元素

      • 开放地址法:冲突元素在表内寻找下一个空位置(线性探测、二次探测、双重哈希)

哈希函数设计

哈希函数决定了哈希表性能的好坏。设计原则:

均匀分布:尽量让 key 均匀分布到各个桶

高效:计算要快,避免性能瓶颈

确定性:相同 key 必须映射到相同位置

常见哈希函数:

整型 key:直接取模

int hash(int key) { return key % table_size; }

字符串 key:常用多项式滚动哈希

hash = s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] index = hash % table_size;

冲突解决策略详解

拉链法

每个桶存储一个链表或其他数据结构(如平衡树)。

插入时将元素加入链表尾部或头部。

查找时在链表中遍历。

优点:实现简单,删除方便。

缺点:最坏情况退化为链表,查找 O(n)。

开放地址法

所有元素存储在数组中,不用链表。

冲突时通过探测找到下一个空槽。

常用探测策略:

线性探测

index = (hash(key) + i) % table_size
i = 0,1,2,...

二次探测

index = (hash(key) + i^2) % table_size

哈希表操作复杂度

操作理想情况平均情况最坏情况
插入O(1)O(1)O(n)
查找O(1)O(1)O(n)
删除O(1)O(1)O(n)

哈希表的应用场景

字典/映射结构:C++unordered_map、JavaHashMap

去重:用 Set 保存唯一值计数统计:频率统计问题

缓存实现:如 LRU Cache 的快速访问

查找优化:通过 key 快速查找复杂对象

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 21:43:15

算法:四数相加||

题目(四数相加 II)本质是:给你 4 个数组 A、B、C、D统计有多少个四元组 (i, j, k, l)满足A[i] B[j] C[k] D[l] 0 关键点数组长度一般 ≤ 200暴力 4 重循环是 O(n^4) → 必超时核心思想:把「四数相加」拆成「两数相加 两数相加…

作者头像 李华
网站建设 2026/4/13 0:11:29

差分信号布线在PCB原理图设计中的应用详解

以下是对您提供的博文内容进行 深度润色与专业重构后的版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、老练、有工程师现场感 ✅ 摒弃“引言/核心/应用/总结”等模板化结构,以 真实设计逻辑流 组织全文 ✅ 所有技…

作者头像 李华
网站建设 2026/4/12 3:50:14

告别环境配置烦恼!YOLOE镜像开箱即用实测分享

告别环境配置烦恼!YOLOE镜像开箱即用实测分享 你有没有过这样的经历:凌晨两点,对着终端里第7次报错的 ImportError: cannot import name MultiScaleDeformableAttention 发呆;CUDA版本、PyTorch编译方式、CLIP分支兼容性……光是…

作者头像 李华
网站建设 2026/4/11 23:13:11

5个专业级技巧:DLSS Swapper如何优化游戏超采样性能

5个专业级技巧:DLSS Swapper如何优化游戏超采样性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 在3A游戏画质持续提升的当下,玩家常面临"画质-性能"的两难选择:开启DL…

作者头像 李华
网站建设 2026/4/12 10:08:38

流媒体下载难题终结者:N_m3u8DL-RE如何让视频保存变得简单高效

流媒体下载难题终结者:N_m3u8DL-RE如何让视频保存变得简单高效 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器,支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u…

作者头像 李华
网站建设 2026/4/16 15:22:24

3分钟上手BetterNCM Installer:网易云音乐插件管理的免费高效工具

3分钟上手BetterNCM Installer:网易云音乐插件管理的免费高效工具 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 你是否遇到过网易云音乐插件安装繁琐、版本不兼容的问题&…

作者头像 李华