为什么这门课适合职场算法复习

很多程序员在工作中习惯使用 STL 或标准库函数,面对手写排序、堆操作或复杂逻辑时往往生疏。这门课程并非从零开始讲计算机基础,而是专门针对已经有 C++ 基础、但缺乏系统算法训练的人群设计。它的核心价值在于填补「会写业务代码」与「能解决底层逻辑问题」之间的Gap。对于准备技术面试、公司内部评级,或者单纯希望提升代码效率的开发者来说,这是一份务实的复习资料。课程不追求高深的数学推导,而是聚焦于如何在工程实践中正确、高效地实现常见数据结构与算法。

核心内容覆盖与学习路径建议

课程内容从排序算法切入,这是理解算法复杂度分析的最佳入口。前两章重点讲解插入排序、选择排序等基础 O(n^2) 算法,并引入泛型编程和性能测试方法,教你如何客观评估代码效率。随后的归并排序与快速排序章节是重中之重,特别是三路快速排序等优化技巧,直接关联到实际开发中的性能调优思维。第三章之后的堆与堆排序部分,则深入讲解了优先队列的实现原理及索引堆的高级应用。建议初学者先通过试看章节了解课程节奏,若对 C++ 模板机制熟悉,可直接进入排序算法章节;若对堆结构陌生,需重点研读 Shift Up/Down 及堆化(Heapify)的实现细节,这是后续学习图论和高级数据结构的基础。

学完能做什么及资料使用建议

完成本课程后,你将能够独立实现主流排序算法及其优化版本,理解时间复杂度与空间复杂度的权衡,并掌握基于堆的高效率数据管理机制。更重要的是,你建立了一套「测试驱动开发」的算法思维,懂得如何构造测试用例来验证算法的正确性与性能。建议学习者不要仅停留在观看视频,务必结合课程提供的测试框架进行编码练习。在观看每一节排序或堆操作的讲解后,尝试自己手写代码,并利用课程中的随机数据生成器和性能计时工具进行对比验证。这种「看、写、测」循环的学习方式,能将短期记忆转化为长期的工程能力,真正应对面试中的手写代码环节或工作中遇到的性能瓶颈问题。

课程目录

第1章 当我们谈论算法的时候,我们在谈论什么? 试看 3 节 | 28分钟 1-1 我们究竟为什么要学习算法 (15:33).mp4
 1-2 课程介绍 (12:22).mp4
 1-3 在学习算法和数据结构的具体知识前,你可能想读一读这两篇文章.mp4
 第2章 排序基础 试看 7 节 | 67分钟 2-1 选择排序法 - Selection Sort (08:45).mp4
 2-2 使用模板(泛型)编写算法 (11:22).mp4
 2-3 随机生成算法测试用例 (09:46).mp4
 2-4 测试算法的性能 (08:41).mp4
 2-5 插入排序法 - Insertion Sort (11:01).mp4
 2-6 插入排序法的改进 (11:15).mp4
 2-7 更多关于O(n^2)排序算法的思考 (05:39).mp4
 第3章 高级排序算法 9 节 | 108分钟 3-1 归并排序法 - Merge Sort (12:36).mp4
 3-2 归并排序法的实现 (12:38).mp4
 3-3 归并排序法的优化 (08:08).mp4
 3-4 自底向上的归并排序算法 (08:30).mp4
 3-5 快速排序法 - Quick Sort (14:31).mp4
 3-6 随机化快速排序法 (09:50).mp4
 3-7 双路快速排序法 (12:51).mp4
 3-8 三路快速排序法 (15:34).mp4
 3-9 归并排序和快速排序的衍生问题 (13:10).mp4
 第4章 堆和堆排序 

13 节 | 127分钟 4-1 为什么使用堆? (10:30).mp4
 4-2 堆的基本存储 (12:10).mp4
 4-3 Shift Up (11:12).mp4
 4-4 Shift Down (11:32).mp4
 4-5 基础堆排序和Heapify (16:04).mp4
 4-6 优化的堆排序(Heap Sort) (11:49).mp4
 4-7 【勘误】关于从0开始索引的堆最后一个非叶子结点索引值的计算.mp4
 4-8 索引堆(Index Heap) (16:20).mp4
 4-9 索引堆的优化 (12:51).mp4
 4-10 更多关于操作索引的思考.mp4
 4-

11 和堆相关的其他问题 (11:30).mp4
 4-

12 两种关于 topK 问题求解思路的套路.mp4
 4-

13 排序算法总结 (12:49).mp4
 第5章 二分搜索树 

11 节 | 137分钟 5-1 二分查找法(Binary Search) (16:14).mp4
 5-2 二分搜索树基础 (Binary Search Tree) (11:50).mp4
 5-3 二分搜索树的节点插入 (08:55).mp4
 5-4 二分搜索树的查找 (13:58).mp4
 5-5 二分搜索树的遍历(深度优先遍历) (15:24).mp4
 5-6 层序遍历(广度优先遍历) (08:09).mp4
 5-7 删除最大值,最小值 (13:20).mp4
 5-8 二分搜索树节点的删除(Hubbard Deletion) (16:41).mp4
 5-9 二分搜索树的顺序性 (10:35).mp4
 5-

10 二分搜索树的局限性 (13:36).mp4
 5-

11 树形问题和更多树 (07:57).mp4
 第6章 并查集 6 节 | 63分钟 6-1 并查集基础(Union Find) (09:05).mp4
 6-2 Quick Find (11:30).mp4
 6-3 Quick Union (13:24).mp4
 6-4 基于size的优化 (07:33).mp4
 6-5 基于rank的优化 (06:35).mp4
 6-6 路径压缩 (Path Compression) (14:09).mp4
 第7章 图的基础 9 节 | 118分钟 7-1 图论基础 (12:54).mp4
 7-2 图的表示 (19:27).mp4
 7-3 相邻结点迭代器 (15:07).mp4
 7-4 图的算法框架 (08:41).mp4
 7-5 深度优先遍历和联通分量 (17:44).mp4
 7-6 寻路 (13:48).mp4
 7-7 广度优先遍历和最短路径 (15:01).mp4
 7-8 迷宫生成,PS抠图——更多无权图的应用 (14:28).mp4
 7-9 无权图最短路径的应用:.mp4
 第8章 最小生成树 8 节 | 91分钟 8-1 有权图 (18:10).mp4
 8-2 最小生成树问题和切分定理 (08:35).mp4
 8-3 Prim算法的第一个实现 (Lazy Prim) (18:55).mp4
 8-4 Prim算法的优化 (12:02).mp4
 8-5 优化后的Prim算法的实现 (11:58).mp4
 8-6 Krusk算法 (14:36).mp4
 8-7 最小生成树算法的思考 (05:46).mp4
 8-8 思想简单但实现复杂的算法.mp4
 第9章 最短路径 8 节 | 66分钟 9-1 最短路径问题和松弛操作(Relaxation) (08:24).mp4
 9-2 Dijkstra算法的思想 (12:20).mp4
 9-3 实现Dijkstra算法 (12:18).mp4
 9-4 换一种方法实现 Dijkstra 和 Prim.mp4
 9-5 负权边和Bellman-Ford算法 (11:05).mp4
 9-6 实现Bellman-Ford算法 (10:10).mp4
 9-7 【勘误】关于Bellman-Ford算法的实现.mp4
 9-8 更多和最短路径相关的思考 (11:15).mp4
 第10章 结束语 1 节 | 14分钟 10-1 总结,算法思想,大家加油 (13:38).mp4