Data Structures in C++:哈希
发布日期:2021-05-17 15:29:46 浏览次数:27 分类:精选文章

本文共 503 字,大约阅读时间需要 1 分钟。

文章目录


Hash中文翻译为 “散列”,以下统称其音译 “哈希”

哈希映射

哈希映射(Hash Map)是根据键值对直接进行访问的数据结构。通过将键值映射到表中一个位置来访问记录,以加快查找速度,这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。哈希映射在C++STL中的实现为unordered_map,键是唯一的

特点:

  • 抗篡改能力:修改一个比特位会带来巨大影响
  • 哈希映射是“非对称”的,是明文到密文的不可逆映射,只能加密,不能解密

哈希集

哈希集合是集合数据结构的实现之一,用于存储唯一值。C++STL中的实现为unordered_set,键唯一,按键生成散列

哈希冲突

当两对数据的哈希值相同时发生冲突。此冲突在实际应用中无法完全避免,处理方法主要有两种:开放寻址法和拉链法

  • 开放寻址法:冲突时按照特定方法继续探测,例如线性探查、二次探查、伪随机探测等
  • 拉链法:将冲突的元素插入链表中,适合冲突严重的情况

哈希查找

哈希查找通过哈希映射直接计算存储地址进行查找,步骤详细如下

  • 构造哈希表
  • 根据冲突处理方法解决冲突
  • 在哈希表基础上执行查找
  • 对于无冲突的哈希表,查找复杂度为O(1),是最快的查找方法

    上一篇:Data Structures in C++:图
    下一篇:Data Structures in C++:堆和堆排序

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月27日 06时00分09秒