Skip to content

第八章 数据结构比较与工程实践


1. 最后一章为什么不再讲新结构

如果学到最后还只是“又记住了几个结构名字”,那这门课其实没有学成。真正成熟的数据结构能力,表现为你能面对一个问题时快速判断:

  1. 数据关系是什么。
  2. 主操作是什么。
  3. 哪个结构最匹配。
  4. 复杂度和工程代价分别来自哪里。

因此,最后一章不再引入新名词,而是把前面七章拉回到统一框架下,做课程级整合。

2. 一张总表看主要结构

结构核心优势主要代价典型场景
数组 / 切片随机访问快,局部性好中间插删代价高顺序存储、批量扫描、堆底层
链表局部改链灵活随机访问慢,缓存差频繁局部插删、节点稳定引用
O(1) 栈顶操作只能访问一端回溯、调用栈、表达式处理
队列O(1) 头尾操作不适合中间访问调度、缓冲、BFS
BST / 平衡树有序查找与动态更新实现复杂,维护旋转代价有序集合、范围查询
快速取最值不适合任意键查找优先队列、调度、Dijkstra
哈希表平均快速查找不保序,冲突影响性能集合、字典、去重
并查集高效维护连通性只适合特定问题连通分量、集合归并
图邻接表表达复杂连接关系算法多样、实现复杂路网、依赖、社交图

这张表最重要的意义不是方便背诵,而是帮你建立“每个结构都是为某类主操作服务”的意识。

3. 决策流程:面对新问题先问什么

4. 工程上为什么“理论最优”不一定就是最好

5. 缓存局部性:为什么数组经常赢得很“粗暴”

6. 典型场景一:消息消费队列

7. 典型场景二:排行榜前 k

8. 典型场景三:社交关系是否同圈

9. 典型场景四:词典、配置表、缓存键值

10. 数据结构与 Go 标准库的关系

11. 数据结构学习的终点,不是刷题模板

12. 一份课程级复盘清单

13. 本章小结