黑马程序员 C++ 全套 — 视频对照表

B站原视频:BV1et411b73Z

阶段对照

章节对应我们的课程
第一部分:C++ 基础对应 0003/0004/0007/0009
项目一:通讯录管理系统综合项目(可在 0015 后练习)
第二部分:C++ 核心编程对应 0007B、0013、0301-0304
项目二:职工管理系统综合项目
第三部分:模板 + STL对应 0008/0011;模板部分对应阶段五
项目三:演讲比赛流程管理系统综合项目
项目四:机房预约系统综合项目

第一部分:C++ 基础

对应课程:对应 0003/0004/0007/0009(共 71 节)

项目一:通讯录管理系统

对应课程:综合项目(可在 0015 后练习)(共 12 节)

第二部分:C++ 核心编程

对应课程:对应 0007B、0013、0301-0304(共 62 节)

项目二:职工管理系统

对应课程:综合项目(共 20 节)

第三部分:模板 + STL

对应课程:对应 0008/0011;模板部分对应阶段五(共 97 节)

项目三:演讲比赛流程管理系统

对应课程:综合项目(共 18 节)

项目四:机房预约系统

对应课程:综合项目(共 33 节)

另一套:数据结构与算法 · 排序单元(14 集 / 3 小时 25 分)

这套课不是黑马那套,是补「数据结构与算法」的。本页只收录你已经学到的那一章 —— 排序。 总时长 3 小时 25 分,但你只需要看 3 集(约 38 分钟):0407 已经把竞赛会用到的全部讲完,这里剩下的要么是失败优化的标本,要么竞赛不考。

章节时长对应课件建议
直接插入排序10:240407 §2 / 0006跳过 你现在能直接手写
直接插入排序代码(C/C++实现)08:540407 §2跳过
折半插入排序09:260407 未讲看 「优化了比较、没优化移动」的标本
折半插入排序代码(C/C++实现)17:560407 未讲跳过 知道思路就够
希尔排序10:160407 §2 只提了名字看 第一个打破 O(n²) 的排序
希尔排序代码(C/C++实现)11:130407 §2可选 增量为什么还能对
冒泡排序10:460006 / 0407 §5.1跳过
简单选择排序代码(C/C++实现)12:060407 §2 对照表跳过
堆与堆排序16:360406 / 0407 §7可选 和下一集只看一个
堆排序代码(C/C++实现)18:360406 / 0407 §7看 原地排序、std::sort 的兜底
归并排序13:110407 §4跳过 你还用它 AC 了 P1908
归并排序代码(C/C++递归实现)23:140407 §4跳过
基数排序12:050407 未讲前半 只看「桶」的概念,不考
基数排序代码(C/C++链式实现)31:32——跳过 竞赛不用
那 3 集为什么值得看
① 折半插入排序:用二分把「找插入位置」降到 O(log n),但移动仍是 O(n) → 整体还是 O(n²)。这是「为什么插入排序优化不动」的标准答案:瓶颈不在比较,在移动。
② 希尔排序:先按大间隔跳着插、让数组「大致有序」,再缩小间隔。快的原因是间隔大时每次移动能跨越很远,平均约 O(n1.3),取决于增量序列。
③ 堆排序代码:把整个数组原地变成堆、反复取堆顶 —— 不用额外空间。这也解释了 0407 §7:std::sort 的 introsort 递归太深时会自动切堆排序,保证最坏 O(n log n)。
比这 14 集更值钱的,是你已经做完的两件事
· 归并求逆序对(P1908 已 AC)
· 快排 partition 求第 k 小(P1923 已 AC)
视频里 14 集讲的全是「怎么排序」,没有一集讲「排序能解决什么别的题」。蓝桥/ACM 初赛考的恰恰是后者。

另一套:数据结构与算法 · 高级树与哈希单元(7 集 / 2 小时 9 分)

同一套课里紧接着排序的那一章。这一章全是「别人已经写好的东西」—— AVL、红黑树、B 树、B+ 树,竞赛里没有人手写它们,但你天天在用(set / map 是红黑树,数据库索引是 B+ 树)。
只需要看 1 集半(约 35 分钟):哈希表的冲突处理(0416 的内部机制),加 AVL 旋转的直觉。

章节时长对应课件建议
平衡二叉树(AVL 树)13:250405 BST 的退化看前 6 分钟 只看「旋转」怎么把树压回去
红黑树 — 定义、插入、构建16:050416 的 map/set可选看前 5 分钟 知道它是「放松版 AVL」即可
红黑树 — 删除27:56——跳过 面试八股,竞赛不出
B 树 — 来由、定义、插入、构建19:35——可选看前 5 分钟 「为什么磁盘要多层」
B 树 — 删除11:16——跳过
B+ 树10:24——跳过 数据库索引的课,不是算法竞赛的
散列表(哈希表)— 散列函数、冲突处理29:510416 哈希表看 本单元唯一必看,1.5 倍速
只有哈希那一集值得整集看完
0416 教你的是「怎么用 unordered_map」;这一集讲的是它里面发生了什么 —— 散列函数怎么把键变下标、冲突了怎么办(开放寻址 vs 链地址)、装填因子为什么会触发扩容。看完你就真正理解了两件事:
① 为什么 reserve(n * 2) 能省掉近一半时间(减少扩容搬移);
② 为什么出题人能「卡哈希」—— 让所有键撞到同一个桶,查询就退化成 O(n)。
AVL 那一集只看「旋转」:左旋 / 右旋各改三根指针,把「一边高一边低」压平。手写不用会,但看到 BST 退化时知道「有办法救」就够了。
这一章的正确用法:知道它存在,不用会写
竞赛里出现平衡树考点时(比如「区间第 k 小」),标准解法是树状数组 + 二分或权值线段树(0501 之后会学),不是手写 AVL/红黑树 —— 后者只在「可持久化」这种高级考点里才需要,那是省队级别的事。
所以这 7 集的定位是:补底层的常识,不是补代码能力。

课程对照表 · 全部资源