B2.4 · 编程算法

直观观察算法运行

播放、暂停并跟踪 Python 代码,观察数值移动、内存增长与递归调用返回。

使用“下一行”预测接下来会发生什么,再核对变量。各 Python 实现旁的说明会指出:高亮表示下一条语句,还是刚执行完的语句。

B2.4.1 · 效率与内存

比较工作量的增长,再区分输入存储与额外工作内存。打开课程 →

常数增长 · O(1)

观察输入规模变化时,标记操作次数如何变化。

2 个示例 · 同步 Python 代码

线性增长 · O(n)

观察输入规模变化时,标记操作次数如何变化。

2 个示例 · 同步 Python 代码

对数增长 · O(log n)

观察输入规模变化时,标记操作次数如何变化。

2 个示例 · 同步 Python 代码

平方增长 · O(n²)

观察输入规模变化时,标记操作次数如何变化。

2 个示例 · 同步 Python 代码

辅助空间

比较持续累加的总和与不断增长的输入副本。

2 个示例 · 同步 Python 代码

B2.4.2 · 搜索

从首次比较到返回索引,跟踪完整的搜索过程。打开课程 →

线性搜索

依次检查各值,在首次匹配时停止。

4 个示例 · 同步 Python 代码

二分搜索

将搜索区间减半,并跟踪 low、mid 和 high。

同步 Python 代码

B2.4.3 · 排序

观察比较、交换及逐渐增长的已排序区域。打开课程 →

冒泡排序

跟随实际的 Python 执行过程,观察列表的变化。

3 个示例 · 同步 Python 代码

选择排序

跟随实际的 Python 执行过程,观察列表的变化。

3 个示例 · 同步 Python 代码

插入排序 · 拓展

跟随实际的 Python 执行过程,观察列表的变化。

3 个示例 · 同步 Python 代码

B2.4.4–5 · HL 递归

跟踪简单递归函数,再从概念上探索分支递归的应用。打开课程 →

递归求和

观察调用如何逐层增加、到达基本情况,再按相反顺序返回。

2 个示例 · 同步 Python 代码

快速排序 · HL 应用

围绕基准值划分,对更小的子问题排序,再合并结果。

2 个示例 · 同步 Python 代码

分形树 · HL 应用

同一绘制规则在更小的尺度上重复,直到深度为零。

2 个示例 · 同步 Python 代码

返回算法单元 →