学习数据结构与算法,首先要回答两个问题:数据应该怎样组织和表示?怎样评价一种解法的效率与资源代价? 本章围绕这两个问题建立后续课程共用的术语与分析方法。
本章定位
本章不急于实现某一种具体数据结构,而是先搭好一张认知地图。你会先从实际数据出发,理解逻辑关系、存储方式和抽象操作;再学习用输入规模、基本操作和增长数量级分析算法。
学习目标
完成本章后,你应该能够:
- 区分数据元素、逻辑结构、存储结构和抽象数据类型;
- 根据问题需要描述一组数据应支持的基本操作;
- 为简单算法确定输入规模并计算基本操作次数;
- 区分时间复杂度、辅助空间复杂度以及最好、最坏和平均情况;
- 用清楚的前提和推导比较两种实现方案。
三篇文章如何分工
| 学习问题 | 对应文章 | 完成后的可检查能力 |
|---|---|---|
| 数据应该怎样组织和表示? | 0.1 数据结构基础概念 | 能从逻辑关系、存储方式和基本操作描述一个数据组织方案 |
| 怎样评价算法的效率与资源代价? | 0.2 时间与空间复杂度概论 | 能说明输入规模,推导简单代码的时间与辅助空间复杂度 |
| 怎样从内存布局理解操作代价? | 0.3 从内存视角理解复杂度 | 能说明缓存行与内存布局如何影响单次操作的代价 |
推荐学习顺序
- 先学习数据结构基础概念,建立“问题—关系—操作—实现”的共同语言。
- 再学习时间与空间复杂度概论,掌握比较不同实现的方法。
- 然后学习从内存视角理解复杂度,从硬件层理解「单次操作代价」这一环。
- 阅读后完成配套 Lab,用图示、操作计数和实际运行结果检查自己的理解。
配套 Labs
学习建议
从解释走向验证
每学习一个概念,先尝试不用原文解释它,再用小例子、代码或实验检查解释是否成立。建议沿着“阅读 → 理解 → 实现 → 测试 → 复盘”的顺序完成本章。
准备好后,从0.1 数据结构基础概念开始。