算法知识地图

算法学习的主线不是背题,而是理解“数据结构提供组织方式,算法利用组织方式降低复杂度”。这页用来连接已有笔记和待补主题。

主线关系

复杂度分析
  -> 基础数据结构
  -> 排序与查找
  -> 递归 / 分治 / 回溯
  -> 树与图
  -> 动态规划 / 贪心
  -> 字符串与高级专题

1. 基础与复杂度

  • 数据结构与算法基础知识 是入口,负责定义数据元素、逻辑结构、物理结构、ADT、时间复杂度和空间复杂度。
  • 学算法时先判断输入规模,再选复杂度级别:O(1)O(logn)O(n)O(nlogn)O(n^2) 的差异决定能不能跑完。

2. 线性结构

  • 线性表 是顺序表、链表等结构的抽象入口。
  • 适合处理“后进先出”的问题,比如括号匹配、递归模拟、单调栈。
  • 队列 适合处理“先进先出”的问题,是 BFS 和层序遍历的基础。

3. 树形结构

  • 描述层级关系。
  • 二叉树 是遍历、递归、BST、堆、平衡树的基础。
  • AVL树红黑树 解决搜索树退化问题。
  • 连接优先队列、堆排序和 Top K 问题。

关系理解:二叉树强调结构,二叉搜索树强调有序性,平衡树强调高度控制,堆强调局部优先级。

4. 图形与散列结构

  • 处理多对多关系,是路径、连通性、依赖关系的基础。
  • 哈希表 用空间换时间,适合快速查找、去重和计数。

图相关的最短路、最小生成树、强连通分量等主题已集中放到 待补主题及具体维护规则,后续逐步展开。

5. 排序

关系理解:插入/选择/冒泡适合理解基本思想;归并强调分治和稳定性;快排强调划分;堆排强调堆结构;计数/桶排序依赖数据范围。

6. 字符串算法

后续可补:Boyer-Moore、Rabin-Karp、Manacher、Z 算法、Trie、后缀数组。

7. 待补专题

  • 图论:Dijkstra、Floyd、Bellman-Ford、Prim、Kruskal、Tarjan。
  • 动态规划:背包、LIS、LCS、区间 DP、树形 DP、状态压缩 DP。
  • 字符串:Manacher、Z 算法、后缀数组、后缀自动机。

完整待补清单见 待补主题及具体维护规则