算法与数据结构

学习路径

四阶段推进;先走「最小可用路径」,再按知识地图补齐进阶。

0%

最小可用路径(15 步)

  1. 算法与数据结构:定义、范畴与抽象数据类型

    建立算法、数据结构与 ADT 的基本词汇。

    15 分钟入门
  2. 渐进分析:大 O、Ω、Θ 与增长阶

    学会用大 O 比较增长阶,这是全库的分析语言。

    20 分钟入门
  3. 递归式求解与主定理

    掌握递归式与主定理,分治与排序分析的前提。

    25 分钟核心
  4. 均摊分析、最坏与期望复杂度

    理解均摊与期望,避免误读动态数组与哈希表的真实成本。

    20 分钟核心
  5. 数组与动态数组:内存布局与扩容

    数组是所有结构的内存基座,扩容均摊在此落地。

    20 分钟核心
  6. 栈与队列:LIFO、FIFO 与循环队列

    栈与队列是后续树遍历、图遍历、回溯的引擎。

    15 分钟核心
  7. 哈希表:散列函数、冲突解决与扩容

    哈希表是工程中最常用的期望 O(1) 结构,必须弄懂冲突与扩容。

    25 分钟核心
  8. 二叉树与四种遍历

    二叉树与遍历是树/堆/图的前置骨架。

    20 分钟核心
  9. 二叉搜索树:性质、查找与删除

    BST 引入「按序组织」的关键思想与删除三大情形。

    20 分钟核心
  10. 堆与优先队列:建堆、下沉与 Top-K

    堆与优先队列支撑 Top-K、调度与最短路。

    20 分钟核心
  11. 图的表示与 BFS/DFS 遍历

    BFS/DFS 是全部图算法的骨架,也是回溯的近亲。

    25 分钟核心
  12. 比较排序全景与 n log n 下界

    比较排序全景 + n log n 下界,工程排序心智模型的来源。

    25 分钟核心
  13. 二分查找与变体:边界、旋转与答案空间

    二分是「有序即折半」的通用思想,含答案空间二分。

    20 分钟核心
  14. 分治:分解、解决与合并

    分治给出可复用的算法设计框架。

    20 分钟核心
  15. 动态规划入门:状态、转移与背包

    动态规划是最重要的设计思想,从这里进入状态设计的世界。

    25 分钟核心

完整路径说明

边界与目标

核心问题:给定一个问题与一组数据,如何组织数据、设计步骤,使求解过程正确且资源开销(时间/空间)可接受、可预判。

应用场景:服务端与客户端开发中的结构选型(缓存、索引、去重、调度)、面试与算法能力评估、竞赛训练、以及任何「数据量上去之后为什么变慢」的性能归因。

前置知识(不属于本库范围,默认已具备):任一语言的变量、循环、函数、递归写法;高中数学的指数、对数与求和记号。

学完能做到什么:

  1. 对给定代码或算法给出大 O 时间/空间复杂度,并说清最好/最坏/均摊/期望的口径差异;
  2. 面对缓存、索引、去重、排序、调度、路径等典型场景,从复杂度与访问模式出发完成结构选型并说明理由;
  3. 手写实现数组/链表/栈/队列、哈希表、BST 与平衡旋转、堆、图遍历、并查集、二分、四种算法思想的模板代码;
  4. 对 10⁶ 量级数据的行为建立数量级直觉,并能识别「隐藏的 O(n²)」。

阶段划分

阶段目标知识点
入门建立「算法—结构—复杂度」的基本词汇与增长阶直觉kp-001, kp-002, kp-005
核心掌握四大结构族、两大应用、四大思想的核心机制与手写能力kp-003, kp-004, kp-006, kp-007, kp-008, kp-009, kp-011, kp-012, kp-014, kp-016, kp-017, kp-018, kp-020, kp-022, kp-024, kp-025, kp-026, kp-027, kp-030
进阶扩展到工程化与专门化主题:平衡树细节、外存结构、线性排序、外排、DP 进阶、KMP、位运算kp-010, kp-013, kp-015, kp-019, kp-021, kp-023, kp-028, kp-029, kp-031, kp-032
前沿跳出纯技术视角,理解算法的社会影响与治理边界kp-033

最小可用路径

以下 15 个知识点构成最小可用路径(合计约 315 分钟,约 5.3 小时)。按序学完即可建立「能分析、能选型、能实现」的核心能力,其余知识点可在需要时按地图补齐:

  1. kp-001 —— 建立算法、数据结构与 ADT 的基本词汇。
  2. kp-002 —— 学会用大 O 比较增长阶,这是全库的分析语言。
  3. kp-003 —— 掌握递归式与主定理,分治与排序分析的前提。
  4. kp-004 —— 理解均摊与期望,避免误读动态数组与哈希表的真实成本。
  5. kp-006 —— 数组是所有结构的内存基座,扩容均摊在此落地。
  6. kp-008 —— 栈与队列是后续树遍历、图遍历、回溯的引擎。
  7. kp-009 —— 哈希表是工程中最常用的期望 O(1) 结构,必须弄懂冲突与扩容。
  8. kp-011 —— 二叉树与遍历是树/堆/图的前置骨架。
  9. kp-012 —— BST 引入「按序组织」的关键思想与删除三大情形。
  10. kp-014 —— 堆与优先队列支撑 Top-K、调度与最短路。
  11. kp-016 —— BFS/DFS 是全部图算法的骨架,也是回溯的近亲。
  12. kp-020 —— 比较排序全景 + n log n 下界,工程排序心智模型的来源。
  13. kp-022 —— 二分是「有序即折半」的通用思想,含答案空间二分。
  14. kp-024 —— 分治给出可复用的算法设计框架。
  15. kp-026 —— 动态规划是最重要的设计思想,从这里进入状态设计的世界。

学习建议与节奏

  • 每个知识点建议「读一遍 → 手推一遍图/公式 → 写一遍代码 → 做自测题」,单点 20–40 分钟,单日不超过 4 个知识点。
  • 02/03/04 模块动笔画图,06 模块动笔找反例;两轮学习之间隔 1–2 天做回忆式复习。
  • 自测题答不出来时,回到该知识点的「原理与机制」小节重推导,而不是直接看答案。