Skip to content

第五章 哈希表、集合与并查集 ​


1. 从“比较”到“映射”:哈希表的核心跳跃 ​

前面几章的高效结构,大多依赖次序或层次。例如数组用下标定位,BST 用大小关系缩小搜索范围,堆用父子大小规律维护最值。哈希表走的是另一条路:不通过比较逐步逼近目标,而是先把关键字映射到某个桶位置,再在局部处理冲突。

这是一种非常重要的思想跃迁。它意味着:

  1. 结构不再强调整体有序。
  2. 查找速度不再主要来自“比较次数减少”,而来自“映射直接命中”。
  3. 性能瓶颈从比较路径转向哈希函数和冲突分布。

2. 哈希表的组成 ​

一个典型哈希表通常包含三部分:

  1. 桶数组。
  2. 哈希函数。
  3. 冲突解决策略。

若不同关键字被映射到同一个桶,就发生冲突。冲突不是异常,而是哈希表设计中必须接受并处理的常态。

3. 哈希函数应该追求什么 ​

4. 冲突解决:拉链法与开放定址法 ​

4.1 拉链法 ​

4.2 开放定址法 ​

5. Go 里为什么还要手写哈希表 ​

6. 用 Go 实现一个简单的链式哈希集合 ​

7. 集合抽象:不关心顺序,只关心成员关系 ​

8. 并查集:维护连通分量的专用结构 ​

9. 并查集的核心思想 ​

10. 路径压缩与按秩合并 ​

11. Go 实现并查集 ​

12. 哈希表与并查集的关系与区别 ​

13. 本章小结 ​

14. 继续深入 ​