| 章节 | 对应我们的课程 |
|---|---|
| 第一部分:C++ 基础 | 对应 0003/0004/0007/0009 |
| 项目一:通讯录管理系统 | 综合项目(可在 0015 后练习) |
| 第二部分:C++ 核心编程 | 对应 0007B、0013、0301-0304 |
| 项目二:职工管理系统 | 综合项目 |
| 第三部分:模板 + STL | 对应 0008/0011;模板部分对应阶段五 |
| 项目三:演讲比赛流程管理系统 | 综合项目 |
| 项目四:机房预约系统 | 综合项目 |
对应课程:对应 0003/0004/0007/0009(共 71 节)
对应课程:综合项目(可在 0015 后练习)(共 12 节)
对应课程:对应 0007B、0013、0301-0304(共 62 节)
对应课程:综合项目(共 20 节)
对应课程:对应 0008/0011;模板部分对应阶段五(共 97 节)
对应课程:综合项目(共 18 节)
对应课程:综合项目(共 33 节)
这套课不是黑马那套,是补「数据结构与算法」的。本页只收录你已经学到的那一章 —— 排序。 总时长 3 小时 25 分,但你只需要看 3 集(约 38 分钟):0407 已经把竞赛会用到的全部讲完,这里剩下的要么是失败优化的标本,要么竞赛不考。
| 章节 | 时长 | 对应课件 | 建议 |
|---|---|---|---|
| 直接插入排序 | 10:24 | 0407 §2 / 0006 | 跳过 你现在能直接手写 |
| 直接插入排序代码(C/C++实现) | 08:54 | 0407 §2 | 跳过 |
| 折半插入排序 | 09:26 | 0407 未讲 | 看 「优化了比较、没优化移动」的标本 |
| 折半插入排序代码(C/C++实现) | 17:56 | 0407 未讲 | 跳过 知道思路就够 |
| 希尔排序 | 10:16 | 0407 §2 只提了名字 | 看 第一个打破 O(n²) 的排序 |
| 希尔排序代码(C/C++实现) | 11:13 | 0407 §2 | 可选 增量为什么还能对 |
| 冒泡排序 | 10:46 | 0006 / 0407 §5.1 | 跳过 |
| 简单选择排序代码(C/C++实现) | 12:06 | 0407 §2 对照表 | 跳过 |
| 堆与堆排序 | 16:36 | 0406 / 0407 §7 | 可选 和下一集只看一个 |
| 堆排序代码(C/C++实现) | 18:36 | 0406 / 0407 §7 | 看 原地排序、std::sort 的兜底 |
| 归并排序 | 13:11 | 0407 §4 | 跳过 你还用它 AC 了 P1908 |
| 归并排序代码(C/C++递归实现) | 23:14 | 0407 §4 | 跳过 |
| 基数排序 | 12:05 | 0407 未讲 | 前半 只看「桶」的概念,不考 |
| 基数排序代码(C/C++链式实现) | 31:32 | —— | 跳过 竞赛不用 |
std::sort 的 introsort 递归太深时会自动切堆排序,保证最坏 O(n log n)。
同一套课里紧接着排序的那一章。这一章全是「别人已经写好的东西」—— AVL、红黑树、B 树、B+ 树,竞赛里没有人手写它们,但你天天在用(set / map 是红黑树,数据库索引是 B+ 树)。
只需要看 1 集半(约 35 分钟):哈希表的冲突处理(0416 的内部机制),加 AVL 旋转的直觉。
| 章节 | 时长 | 对应课件 | 建议 |
|---|---|---|---|
| 平衡二叉树(AVL 树) | 13:25 | 0405 BST 的退化 | 看前 6 分钟 只看「旋转」怎么把树压回去 |
| 红黑树 — 定义、插入、构建 | 16:05 | 0416 的 map/set | 可选看前 5 分钟 知道它是「放松版 AVL」即可 |
| 红黑树 — 删除 | 27:56 | —— | 跳过 面试八股,竞赛不出 |
| B 树 — 来由、定义、插入、构建 | 19:35 | —— | 可选看前 5 分钟 「为什么磁盘要多层」 |
| B 树 — 删除 | 11:16 | —— | 跳过 |
| B+ 树 | 10:24 | —— | 跳过 数据库索引的课,不是算法竞赛的 |
| 散列表(哈希表)— 散列函数、冲突处理 | 29:51 | 0416 哈希表 | 看 本单元唯一必看,1.5 倍速 |
unordered_map」;这一集讲的是它里面发生了什么 —— 散列函数怎么把键变下标、冲突了怎么办(开放寻址 vs 链地址)、装填因子为什么会触发扩容。看完你就真正理解了两件事:reserve(n * 2) 能省掉近一半时间(减少扩容搬移);