Skip to content

计划

第 1 章 算法基础

1. 什么是算法?

#算法备注
1欧几里得最大公约数算法已知最古老的求最大公约数的算法
2埃拉托斯特尼筛法高效生成素数
3二分查找分治搜索
4快速幂算法快速幂计算
5长除法经典的分步算术运算
6模加法算法循环算术
7进制转换算法在不同数制间转换
8阶乘计算递归与迭代方法
9斐波那契数列递归与动态计算对比
10汉诺塔递归问题解决模式

2. 度量时间与空间

#算法备注
11操作计数手动步数计数以分析复杂度
12循环分析评估循环的时间开销
13递归展开分析递归开销
14摊还分析平均每操作成本
15空间计数栈和堆跟踪
16内存占用估算器跟踪每个变量的使用情况
17时间复杂度表映射 O(1)...O(n²)...O(2ⁿ)
18时空权衡缓存与重新计算的权衡
19性能剖析算法经验性时间测量
20基准测试框架比较算法性能

3. 大 O、大 Θ、大 Ω

#算法备注
21增长率比较器比较渐近行为
22主导项提取器简化运行时表达式
23基于极限的复杂度测试使用极限进行渐近分析
24求和简化器算术/几何序列求和
25递归树方法可视化递归开销
26主定理求值器求解 T(n) 递归式
27大 Θ 证明构造器界定上界和下界
28大 Ω 情形查找器最佳情况分析
29经验复杂度估计器通过倍增实验测量
30复杂度类别识别器将运行时间匹配到已知类别

4. 算法范式(贪心、分治、动态规划)

#算法备注
31贪心找零问题局部最优的逐步选择
32霍夫曼编码贪心压缩树
33归并排序分治排序
34二分查找分治搜索
35Karatsuba 乘法算法递归分治乘法
36矩阵链乘法具有最优子结构的动态规划
37最长公共子序列经典动态规划问题
38钢条切割问题动态规划优化
39活动选择问题贪心调度
40最优合并模式贪心文件合并

5. 递归关系

#算法备注
41线性递归求解器线性递归的闭式解
42主定理分治算法复杂度分析
43代入法归纳证明方法
44迭代法逐步展开递归式
45生成函数转换递归关系
46矩阵快速幂快速求解线性递归
47递归到动态规划表制表法
48分治合并模板将递归式转化为算法
49记忆化递归求解器存储重叠子问题的结果
50特征多项式求解齐次递归式

6. 搜索基础

#算法备注
51线性搜索顺序扫描元素
52二分查找中点折半
53跳跃搜索分块跳跃线性搜索
54指数搜索倍增步长
55插值搜索根据值估计位置
56三分查找分成三份
57斐波那契搜索黄金比例搜索
58哨兵搜索提前终止优化
59双向搜索从两端向中间搜索
60旋转数组搜索适应性二分查找

7. 排序基础

#算法备注
61冒泡排序相邻交换排序
62选择排序每轮查找最小值
63插入排序增量构建排序
64希尔排序基于间隔的插入排序
65归并排序分治排序
66快速排序基于分区
67堆排序二叉堆排序
68计数排序整数键分布排序
69基数排序按位排序
70桶排序分组到区间排序

8. 数据结构概述

#算法备注
71栈的压入/弹出后进先出操作
72队列的入队/出队先进先出操作
73单向链表线性节点链
74双向链表双向遍历
75哈希表插入键值索引
76二叉搜索树插入有序节点放置
77堆化原地建堆
78并查集操作不相交集合管理
79图邻接表构建稀疏表示
80字典树插入/搜索字符串前缀树

9. 图与树概述

#算法备注
81深度优先搜索遍历深度优先探索
82广度优先搜索遍历层次顺序探索
83拓扑排序有向无环图排序
84最小生成树Kruskal/Prim 算法概述
85Dijkstra(迪杰斯特拉)最短路径加权图最短路径
86Bellman-Ford(贝尔曼-福特)算法处理负权边
87Floyd-Warshall(弗洛伊德-沃舍尔)算法所有节点对最短路径
88用于最小生成树的并查集边分组
89树遍历中序、前序、后序遍历
90最近公共祖先树中的公共节点

10. 算法设计模式

#算法备注
91暴力枚举尝试所有可能性
92贪心选择每步局部最优
93分治法分解与合并
94动态规划重用子问题
95回溯法带撤销的探索
96分支限界法剪枝搜索空间
97随机化算法引入随机性
98近似算法近似最优解
99在线算法逐步决策
100混合策略结合多种范式

第 2 章 排序与搜索

11. 基础排序算法(冒泡、插入、选择)

#算法名称说明
101冒泡排序交换相邻的无序元素
102改进的冒泡排序若已排序则提前停止
103鸡尾酒排序双向冒泡遍历
104选择排序每趟选择最小元素
105双向选择排序每趟同时查找最小值和最大值
106插入排序将每个元素插入正确位置
107二分插入排序使用二分查找确定位置
108侏儒排序类似插入排序的简单交换算法
109奇偶排序适合并行化的比较排序
110臭皮匠排序递归式的、古怪的教学用排序算法

12. 分治排序算法(归并、快速、堆)

#算法名称说明
111归并排序递归地分解与合并
112迭代归并排序自底向上的非递归版本
113快速排序基于划分的递归排序
114Hoare 划分方案经典的快速排序划分方法
115Lomuto 划分方案更简单但效率较低
116随机化快速排序避免最坏情况的枢轴选择
117堆排序建堆 + 重复提取最大值
118三路快速排序高效处理重复元素
119外部归并排序用于海量数据的基于磁盘的归并排序
120并行归并排序在线程间分配工作

13. 计数与分布排序(计数、基数、桶)

#算法名称说明
121计数排序统计键值出现次数
122稳定的计数排序保持相等元素的原始顺序
123基数排序(LSD)最低有效位优先
124基数排序(MSD)最高有效位优先
125桶排序将元素分配到桶中
126鸽巢排序简单的桶排序变体
127闪电排序带有原地修正的分布排序
128邮递员排序稳定的多键排序
129地址计算排序类似哈希的分布排序
130扩散排序基数/快速排序混合策略

14. 混合排序算法(IntroSort、Timsort)

#算法名称说明
131IntroSort快速排序 + 堆排序后备
132TimSort归并 + 插入 + 利用自然有序段
133双枢轴快速排序现代快速排序优化
134SmoothSort类似堆排序的自适应排序
135块归并排序缓存高效的归并排序变体
136自适应归并排序根据数据部分有序程度进行调整
137PDQSort模式击败快速排序
138WikiSort稳定的原地归并排序
139GrailSort原地稳定的归并排序
140自适应混合排序动态选择排序策略

15. 特殊排序算法(循环、侏儒、梳子、煎饼)

#算法名称说明
141循环排序写入次数最少
142梳子排序间隙逐渐缩小的冒泡排序
143侏儒排序类似插入排序的交换算法
144鸡尾酒排序双向冒泡排序
145煎饼排序基于翻转的排序
146双调排序并行网络排序
147奇偶归并排序排序网络设计
148睡眠排序使用时间作为排序键
149珠排序模拟重力
150猴子排序随机排列直到有序

16. 线性与二分搜索

#算法名称说明
151线性搜索顺序扫描
152线性搜索(哨兵)在末尾设置哨兵元素
153二分搜索(迭代)每次循环将区间减半
154二分搜索(递归)通过递归将区间减半
155二分搜索(下界)查找第一个 >= 目标的位置
156二分搜索(上界)查找第一个 > 目标的位置
157指数搜索步长倍增
158跳跃搜索固定步长跳跃后线性搜索
159斐波那契搜索黄金比例风格的跳跃搜索
160均匀二分搜索避免重复计算中点

17. 插值与指数搜索

#算法名称说明
161插值搜索根据值估算索引位置
162递归插值搜索根据估算的中点进行划分
163指数搜索倍增然后二分细化
164倍增搜索通用的指数搜索模式
165疾驰搜索用于 TimSort 合并阶段
166无界二分搜索动态确定搜索边界
167求根二分法搜索零点
168黄金分割搜索优化单峰函数
169斐波那契搜索(最优)类似黄金分割搜索
170跳跃 + 二分混合搜索组合探测策略

18. 选择算法(快速选择、中位数的中位数)

#算法名称说明
171快速选择基于划分的选择算法
172中位数的中位数确定性枢轴选择
173随机化选择随机枢轴版本
174对答案进行二分搜索基于范围的选择
175顺序统计树支持排名查询的二叉搜索树
176锦标赛树选择层次化比较
177堆选择(最小堆)维护前 k 个元素
178部分快速排序排序部分前缀
179BFPRT 算法线性时间选择算法
180第 K 大流元素流式数据选择

19. 区间搜索与最近邻

#算法名称说明
181二分搜索区间查找下界和上界
182线段树查询区间求和/最小值/最大值
183树状数组查询高效前缀和
184区间树搜索重叠区间查询
185KD 树搜索空间最近邻搜索
186R 树查询几何范围搜索
187区间最小值查询稀疏表方法
188Mo 算法离线查询重排序
189扫描线区间搜索排序 + 扫描技术
190球树最近邻搜索度量空间搜索

20. 搜索优化与变体

#算法名称说明
191带容差的二分搜索用于浮点数值
192三分搜索单峰函数优化
193基于哈希的搜索期望 O(1) 查找
194布隆过滤器查找概率成员查询
195布谷鸟哈希搜索双哈希重定位
196罗宾汉哈希搜索均衡探测长度
197跳跃一致性哈希搜索稳定的哈希分配
198字典树前缀搜索自动补全查找
199后缀数组模式搜索快速子串查找
200无限数组搜索动态边界查找

第 3 章 数据结构实战

21. 数组、链表、栈、队列

#算法备注
201动态数组扩容容量翻倍策略
202循环数组实现回绕索引
203单向链表插入/删除基本节点操作
204双向链表插入/删除双向链接
205栈压入/弹出后进先出结构
206队列入队/出队先进先出结构
207双端队列实现双端队列
208循环队列固定大小、回绕的队列
209用队列实现栈使用两个队列实现栈
210用栈实现队列使用两个栈实现队列

22. 哈希表及其变体(布谷鸟、罗宾汉、一致性)

#算法备注
211哈希表插入键值对与取模运算
212线性探测顺序解决冲突
213二次探测非线性探测序列
214双重哈希冲突时使用备用哈希函数
215布谷鸟哈希双表重定位策略
216罗宾汉哈希均衡探测长度的公平性
217链式哈希表链表桶
218完美哈希无冲突映射
219一致性哈希跨节点的稳定分布
220动态重哈希在负载因子阈值时调整大小

23. 堆(二叉堆、斐波那契堆、配对堆)

#算法备注
221二叉堆插入上浮维护
222二叉堆删除下沉维护
223建堆(堆化)自底向上 $O(n)$ 构建
224堆排序重复提取最大值
225最小堆实现用于访问最小元素
226最大堆实现用于访问最大元素
227斐波那契堆插入/删除摊还高效操作
228配对堆合并轻量级可合并堆
229二项堆合并合并相同阶的树
230左倾堆合并维护秩偏斜堆

24. 平衡树(AVL、红黑树、伸展树、树堆)

#算法备注
231AVL 树插入旋转以维持平衡
232AVL 树删除删除后重新平衡
233红黑树插入颜色修复与旋转
234红黑树删除维持不变式
235伸展树访问将访问节点移至根
236树堆插入基于优先级的旋转
237树堆删除随机化平衡
238加权平衡树维护子树权重
239替罪羊树重建在大小阈值时重新平衡
240AA 树简化的红黑树变体

25. 线段树与树状数组

#算法备注
241构建线段树递归构造
242区间和查询递归或迭代查询
243区间更新懒惰传播技术
244单点更新修改单个元素
245构建树状数组增量二进制索引
246树状数组更新更新累积和
247树状数组查询前缀和检索
248线段树合并合并子节点结果
249可持久化线段树维护版本历史
250二维线段树用于矩阵区间查询

26. 并查集

#算法备注
251Make-Set初始化每个元素
252Find定位代表元
253Union合并两个集合
254按秩合并将较小树附加到较大树
255路径压缩扁平化树结构
256支持回滚的并查集支持撤销操作
257树上的并查集跟踪子树连通性
258Kruskal 最小生成树使用并查集选择边
259连通分量对图节点进行分组
260离线查询并查集处理动态合并

27. 概率数据结构(布隆过滤器、Count-Min 草图、HyperLogLog)

#算法备注
261布隆过滤器插入哈希到位数组
262布隆过滤器查询概率成员检查
263计数布隆过滤器通过计数器支持删除
264布谷鸟过滤器空间高效的替代方案
265Count-Min 草图近似频率表
266HyperLogLog基数估计
267Flajolet-Martin早期概率计数
268MinHash估计 Jaccard 相似度
269蓄水池抽样随机 k 样本流
270跳跃布隆过滤器布隆过滤器上的范围查询

28. 跳表与 B 树

#算法备注
271跳表插入概率分层列表
272跳表删除调整指针
273跳表搜索通过塔层跳跃
274B 树插入溢出时分裂
275B 树删除下溢时合并
276B+ 树搜索基于叶节点的顺序扫描
277B+ 树范围查询高效有序访问
278B* 树空间效率更高的变体
279自适应基数树字节级分支
280字典树压缩路径压缩优化

29. 可持久化与函数式数据结构

#算法备注
281可持久化栈保留所有版本
282可持久化数组写时复制分段
283可持久化线段树版本化更新
284可持久化链表不可变节点
285函数式队列摊还反转列表
286手指树快速连接与分割
287拉链结构局部化修改
288可持久化红黑树不可变平衡树
289版本化字典树历史字符串查找
290可持久化并查集时间旅行连通性

30. 高级树与区间查询

#算法备注
291稀疏表构建静态区间最小/最大值
292笛卡尔树RMQ 到 LCA 的转换
293线段树 Beats处理复杂查询
294归并排序树区间计数查询
295小波树按值排名/选择
296KD 树多维查询
297区间树正交区间查询
298二维树状数组矩阵前缀和
299树堆分割/合并基于区间的树堆操作
300树上的莫队算法离线子树查询

第 4 章. 图算法

31. 遍历 (DFS, BFS, 迭代加深)

#算法备注
301深度优先搜索 (递归)深入探索,然后回溯
302深度优先搜索 (迭代)基于栈的探索
303广度优先搜索 (队列)层次顺序遍历
304迭代加深 DFS结合深度限制与完备性
305双向 BFS从两端搜索
306网格上的 DFS迷宫求解 / 连通分量
307网格上的 BFS无权图中的最短路径
308多源 BFS并行层次扩展
309拓扑排序 (基于 DFS)有向无环图排序
310拓扑排序 (Kahn 算法)入度跟踪

32. 强连通分量 (Tarjan, Kosaraju)

#算法备注
311Kosaraju 算法两遍 DFS
312Tarjan 算法低链接值发现
313Gabow 算法栈对跟踪
314SCC DAG 构建缩点后的分量图
315SCC 在线合并增量式缩点
316分量标签传播迭代式标记
317基于路径的 SCC使用路径栈的 DFS
318Kosaraju 并行版本通过并行 DFS 求 SCC
319动态 SCC 维护添加/删除边
320加权图的 SCC结合边权重

33. 最短路径 (Dijkstra, Bellman-Ford, A*, Johnson)

#算法备注
321Dijkstra (二叉堆)贪心边松弛
322Dijkstra (斐波那契堆)改进的优先队列
323Bellman-Ford支持负权重
324SPFA (队列优化)更快的平均情况 Bellman-Ford
325A* 搜索启发式引导的路径
326Floyd–Warshall所有节点对最短路径
327Johnson 算法使用重赋权的所有节点对最短路径
3280-1 BFS基于双端队列的最短路径
329Dial 算法整数权重桶
330多源 Dijkstra多个起点

34. 最短路径变体 (0–1 BFS, 双向, 启发式 A*)

#算法备注
3310–1 BFS适用于权重为 0 或 1 的边
332双向 Dijkstra中间相遇
333带欧几里得启发式的 A*空间最短路径
334ALT 算法A* 地标 + 三角不等式
335收缩层次结构道路网络的预处理
336CH 查询算法基于捷径的路由
337Bellman-Ford 队列变体提前终止
338带提前停止的 Dijkstra到达目标时停止
339目标导向搜索限制扩展方向
340Yen 的 K 最短路径枚举多个最佳路径

35. 最小生成树 (Kruskal, Prim, Borůvka)

#算法备注
341Kruskal 算法排序边 + 并查集
342Prim 算法 (堆)从种子节点生长 MST
343Prim 算法 (邻接矩阵)稠密图变体
344Borůvka 算法分量合并
345反向删除 MST移除重边
346通过 Dijkstra 技巧的 MST适用于正权重
347动态 MST 维护处理边更新
348最小瓶颈生成树最小化最大边权重
349曼哈顿 MST网格图优化
350欧几里得 MST (Kruskal + 几何)使用 Delaunay 图

36. 流 (Ford–Fulkerson, Edmonds–Karp, Dinic)

#算法备注
351Ford–Fulkerson增广路方法
352Edmonds–Karp基于 BFS 的 Ford–Fulkerson
353Dinic 算法层次图 + 阻塞流
354推送-重标记局部预流推送
355容量缩放利用容量层级加速
356代价缩放最小代价优化
357最小代价最大流 (Bellman-Ford)带代价的增广路径
358最小代价最大流 (SPFA)更快的平均情况
359带需求的环流广义流公式化
360连续最短路径增量式最小代价更新

37. 割 (Stoer–Wagner, Karger, Gomory–Hu)

#算法备注
361Stoer–Wagner 最小割全局最小割
362Karger 随机割随机收缩边
363Karger–Stein递归随机割
364Gomory–Hu 树所有节点对最小割
365最大流最小割对偶定理应用
366Stoer–Wagner 重复阶段多轮遍历
367动态最小割边更新时维护
368最小 s–t 割 (Edmonds–Karp)基于流
369近似最小割随机采样
370最小 k 割将图划分为 k 部分

38. 匹配 (Hopcroft–Karp, Hungarian, Blossom)

#算法备注
371二分图匹配 (DFS)简单增广路径
372Hopcroft–KarpO(E√V) 二分图匹配
373Hungarian 算法加权分配
374Kuhn–Munkres最大权重匹配
375Blossom 算法一般图匹配
376Edmonds 花收缩奇环收缩
377贪心匹配快速近似
378稳定婚姻 (Gale–Shapley)稳定配对
379加权 b-匹配容量约束
380极大匹配局部贪心极大集

39. 树算法 (LCA, HLD, 重心分解)

#算法备注
381欧拉序 LCA将树展平为数组
382倍增 LCA跳转 2 的幂次
383Tarjan LCA (离线 DSU)通过并查集处理查询
384轻重链剖分分解路径
385重心分解在重心上递归分割
386树直径 (两次 DFS)最远点对
387树形 DP基于子树的优化
388换根 DP计算所有根节点的答案
389树上二分搜索边权重约束
390虚树在查询子集上构建

40. 高级图算法与技巧

#算法备注
391拓扑 DP在有向无环图顺序上进行 DP
392SCC 缩点图 DP元图处理
393欧拉路径覆盖所有边的迹
394哈密顿路径NP 完全问题探索
395中国邮递员问题可重复边的欧拉回路
396Hierholzer 算法构造欧拉回路
397Johnson 环查找枚举所有环
398传递闭包 (Floyd–Warshall)可达性矩阵
399图着色 (回溯)约束满足
400割点与桥关键结构检测

第5章 动态规划

41. DP基础与状态转移

#算法备注
401斐波那契DP经典的自顶向下 vs 自底向上
402爬楼梯计算小步数路径
403网格路径二维网格上的DP
404最小成本路径累加最小和
405零钱兑换(计算方式)组合求和
406零钱兑换(最小硬币数)最小化步数
4070/1背包问题在重量限制下选择物品
408完全背包问题物品可重复
409最长递增子序列(DP)子序列优化
410编辑距离(Levenshtein)逐步度量相似性

42. 经典问题(背包、子集和、零钱兑换)

#算法备注
4110/1背包问题容量限制下的价值最大化
412子集和问题布尔可行性DP
413等和子集划分将集合划分为相等的两半
414和为特定值的子集计数计数变体
415目标和带+/-转移的DP
416完全背包问题物品可重复使用
417分数背包问题贪心+DP比较
418零钱兑换(最小硬币数)DP最短路径
419零钱兑换(计算方式)组合计数
420多维背包问题多维容量限制

43. 序列问题(LIS、LCS、编辑距离)

#算法备注
421最长递增子序列O(n²) DP
422LIS(耐心排序)O(n log n) 优化
423最长公共子序列双序列DP
424编辑距离(Levenshtein)转换操作
425最长回文子序列对称DP
426最短公共超序列合并序列
427最长重复子序列带重叠的DP
428字符串交错保持顺序的合并
429序列比对(生物信息学)空位罚分
430Diff算法(Myers/DP)最小编辑路径

44. 矩阵与链式问题

#算法备注
431矩阵链乘法括号化成本
432布尔括号化计算结果为真的方式数
433戳气球区间DP
434最优二叉搜索树加权搜索成本
435多边形三角剖分基于划分的DP
436矩阵路径和二维网格上的DP
437最大正方形子矩阵动态增长检查
438二进制矩阵中的最大矩形直方图 + DP
439子矩阵和查询前缀和DP
440回文分割带分割的DP

45. 状态压缩DP与旅行商问题

#算法备注
441旅行商问题(TSP)访问所有城市
442子集DP遍历状态子集
443哈密顿路径DP状态压缩
444分配问题DP任务掩码
445划分成两个集合平衡负载
446哈密顿回路计数位掩码枚举
447斯坦纳树DP连接终端节点的最小连接
448SOS DP(子集和DP)预计算和
449位掩码背包状态压缩
450位掩码独立集图子集优化

46. 数位DP与SOS DP

#算法备注
451统计具有特定属性的数字数位状态转移
452统计无相邻重复数字的数相邻约束
453区间内数字各位之和依赖进位的状态
454统计满足模条件的数基于数位和模M的DP
455统计递增数字有序约束
456统计不含禁用数字的数排除转移
457SOS DP子集和位掩码子集的和
458SOS DP超集和位掩码超集的和
459异或基DP结合数位和位DP
460回文数位DP对称数位状态

47. DP优化(分治、凸包技巧、Knuth优化)

#算法备注
461分治DP单调决策性质
462Knuth优化满足四边形不等式的DP
463凸包技巧线性递推最小值查询
464李超线段树基于线段维护的凸包
465斜率技巧分段线性优化
466单调队列优化滑动DP状态
467位集DP利用位并行加速
468离线DP查询预处理状态
469DP + 线段树基于区间的优化
470分治背包分割空间的DP

48. 树形DP与换根DP

#算法备注
471子树和DP聚合值
472直径DP通过子状态计算最大路径
473独立集DP选择或跳过节点
474顶点覆盖DP树约束问题
475路径计数DP计算根到叶的路径数
476有根树上的DP自底向上聚合
477换根技巧为所有根计算
478距离和换根高效重新计算
479树染色DP组合计数
480树形DP上的二分搜索单调转移

49. DP重构与回溯

#算法备注
481重构LCS回溯表格
482重构LIS追踪前驱
483重构背包恢复选择的物品
484编辑距离对齐追踪插入/删除/替换操作
485矩阵链括号化重构重建括号化方案
486零钱兑换重构回溯最后使用的硬币
487路径重构DP追踪最小路径
488序列重构从状态重建
489多选择重构组合最佳子路径
490回溯可视化可视化DP回溯工具

50. 元DP与优化模板

#算法备注
491状态压缩模板紧凑表示子集
492转移优化模板预计算转移
493空间优化模板滚动数组
494多维DP模板嵌套循环版本
495决策单调性优化提示
496Monge数组优化利用矩阵性质
497分治模板对半递归
498换根模板通用树形DP
499迭代DP模式自底向上展开
500记忆化模板递归缓存框架

第六章 算法中的数学

51. 数论(最大公约数,模运算,中国剩余定理)

#算法说明
501欧几里得算法计算 gcd(a, b)
502扩展欧几里得算法求解 ax + by = gcd(a, b)
503模加法在模 M 下进行加法
504模乘法在模 M 下进行乘法
505模幂运算快速幂取模 M
506模逆元计算 a⁻¹ mod M
507中国剩余定理合并模方程组
508二进制 GCD(Stein 算法)基于位运算的 gcd
509模约化标准化余数
510模线性方程求解器求解 ax ≡ b (mod m)

52. 素性与因式分解(Miller–Rabin,Pollard Rho)

#算法说明
511试除法简单的素数测试
512埃拉托斯特尼筛法生成直到 n 的素数
513Atkin 筛法更快的筛法变体
514Miller–Rabin 素性测试概率性素性测试
515费马素性测试模幂检查
516Pollard’s Rho 算法随机化因式分解
517Pollard’s p−1 方法利用光滑性进行因式分解
518轮式因式分解跳过已知的合数
519AKS 素性测试确定性的多项式时间测试
520分段筛法为大范围 n 生成素数

53. 组合数学(排列,组合,子集)

#算法说明
521阶乘预计算构建 n! 表
522nCr 计算使用帕斯卡三角形或阶乘
523帕斯卡三角形二项式系数
524多重集组合允许重复
525排列生成字典序
526下一个排列STL 风格的递增
527子集生成位掩码或递归
528格雷码生成单比特翻转
529卡特兰数动态规划计算有效的括号序列数
530斯特林数划分计数

54. 概率与随机化算法

#算法说明
531蒙特卡洛模拟通过随机性近似求解
532拉斯维加斯算法总是正确,时间可变
533蓄水池抽样从流中均匀采样
534随机化快速排序期望 O(n log n)
535随机化快速选择随机枢轴
536生日悖论模拟碰撞概率
537随机哈希减少碰撞机会
538随机游走模拟状态转移
539优惠券收集问题估计期望试验次数
540马尔可夫链模拟转移矩阵采样

55. 筛法与模运算

#算法说明
541埃拉托斯特尼筛法基础素数筛
542线性筛法O(n) 筛法变体
543分段筛法区间素数生成
544最小质因数表通过筛法进行因式分解
545莫比乌斯函数筛法计算积性函数
546欧拉函数筛法计算所有 n 的 φ(n)
547约数个数筛法高效计算约数个数
548模运算预计算存储逆元、阶乘等
549费马小定理a^(p−1) ≡ 1 mod p
550威尔逊定理通过阶乘模 p 进行素数测试

56. 线性代数(高斯消元,LU,SVD)

#算法说明
551高斯消元法求解 Ax = b
552高斯-若尔当消元法化为行最简阶梯形
553LU 分解将 A 分解为 L·U
554Cholesky 分解对称正定矩阵的 A = L·Lᵀ 分解
555QR 分解正交分解
556矩阵求逆(高斯-若尔当)求 A⁻¹
557消元法求行列式主元的乘积
558矩阵的秩非零行计数
559幂法求特征值近似主特征值
560奇异值分解A = UΣVᵀ

57. FFT 与 NTT(快速变换)

#算法说明
561离散傅里叶变换O(n²) 基础算法
562快速傅里叶变换O(n log n) 卷积
563Cooley–Tukey FFT 算法递归分治
564迭代 FFT原地位反转
565逆 FFT恢复时域信号
566基于 FFT 的卷积多项式乘法
567数论变换模素数的 FFT
568逆 NTT模逆变换
569Bluestein 算法任意大小的 FFT
570基于 FFT 的大整数乘法大整数乘积

58. 数值方法(牛顿,辛普森,龙格-库塔)

#算法说明
571牛顿-拉夫森法利用切线求根
572二分法区间折半
573割线法近似导数
574不动点迭代法x = f(x) 收敛
575高斯求积法加权积分
576辛普森法则分段二次函数积分
577梯形法则线性插值积分
578龙格-库塔法常微分方程求解器
579欧拉法逐步求解常微分方程
580梯度下降法数值优化

59. 数学优化(单纯形,梯度,凸优化)

#算法说明
581单纯形法线性规划求解器
582对偶单纯形法求解对偶约束
583内点法凸优化
584梯度下降法无约束优化
585随机梯度下降法基于样本的更新
586牛顿法二次收敛
587共轭梯度法求解对称正定系统
588拉格朗日乘数法约束优化
589KKT 条件求解器凸约束处理
590坐标下降法顺序变量更新

60. 代数技巧与变换技术

#算法说明
591多项式乘法快速卷积
592多项式求逆牛顿迭代
593多项式求导逐项乘以指数
594多项式积分除以指数+1
595形式幂级数复合级数代入
596平方取幂法快速幂运算
597模幂运算快速幂取模 M
598快速沃尔什-哈达玛变换XOR 卷积
599Zeta 变换子集求和
600莫比乌斯反演从和恢复原函数

第 7 章 字符串与文本算法

61. 字符串匹配 (KMP, Z, Rabin–Karp, Boyer–Moore)

#算法备注
601朴素字符串匹配比较每个位置
602Knuth–Morris–Pratt (KMP)利用前缀函数跳过
603Z 算法使用 Z 值进行匹配
604Rabin–Karp滚动哈希比较
605Boyer–Moore基于失配的后向跳跃
606Boyer–Moore–Horspool简化的移位表
607Sunday 算法末字符移位
608有限自动机匹配基于 DFA 的匹配
609Bitap 算法位掩码近似匹配
610Two-Way 算法最优线性匹配

62. 多模式搜索 (Aho–Corasick)

#算法备注
611Aho–Corasick 自动机字典树 + 失败链接
612字典树构建前缀树构建
613失败链接计算使用 BFS 计算转移
614输出链接管理处理重叠模式
615多模式搜索查找所有关键词
616字典匹配查找多个子串
617动态 Aho–Corasick添加/删除模式
618并行 AC 搜索多线程遍历
619压缩 AC 自动机内存优化
620支持通配符的扩展 AC灵活匹配

63. 后缀结构 (后缀数组,后缀树,LCP)

#算法备注
621后缀数组 (朴素)排序所有后缀
622后缀数组 (倍增法)基于排名的 O(n log n) 算法
623Kasai 的 LCP 算法最长公共前缀
624后缀树 (Ukkonen)线性时间在线构建
625后缀自动机子串的最小 DFA
626SA-IS 算法O(n) 后缀数组构建
627LCP RMQ 查询子串的区间最小值查询
628广义后缀数组多字符串
629增强后缀数组结合 SA + LCP
630稀疏后缀树空间高效变体

64. 回文与周期性 (Manacher)

#算法备注
631朴素回文检查中心扩展
632Manacher 算法O(n) 最长回文子串
633最长回文子串中心扩展
634回文 DP 表子串布尔矩阵
635回文树 (Eertree)跟踪不同的回文串
636前缀函数周期性检测重复模式
637Z 函数周期性识别周期性后缀
638KMP 前缀周期检查最短重复单元
639Lyndon 分解将字符串分解为 Lyndon 词
640最小旋转 (Booth 算法)字典序最小移位

65. 编辑距离与序列比对

#算法备注
641Levenshtein 距离插入/删除/替换成本
642Damerau–Levenshtein 距离包含交换操作
643汉明距离计算不同的位数
644Needleman–Wunsch全局比对
645Smith–Waterman局部比对
646Hirschberg 算法内存优化的比对算法
647编辑脚本重建回溯操作
648仿射空位罚分 DP可变空位成本
649Myers 位向量算法快速编辑距离计算
650最长公共子序列基于包含关系的比对

66. 压缩 (Huffman, Arithmetic, LZ77, BWT)

#算法备注
651Huffman 编码最优前缀树
652规范 Huffman 编码确定性排序
653算术编码区间概率编码
654Shannon–Fano 编码早期前缀方法
655游程编码 (RLE)重复压缩
656LZ77滑动窗口匹配
657LZ78字典构建
658LZWGIF 中使用的变体
659Burrows–Wheeler 变换块重排序
660移动至前端编码提升局部性的变换

67. 密码学哈希与校验和

#算法备注
661滚动哈希基于多项式取模
662CRC32循环冗余校验
663Adler-32轻量级校验和
664MD5遗留的密码学哈希函数
665SHA-1已弃用的哈希函数
666SHA-256安全哈希标准
667SHA-3 (Keccak)海绵结构
668HMAC带密钥的消息认证码
669Merkle 树分层哈希
670哈希碰撞检测生日边界模拟

68. 近似与流式匹配

#算法备注
671K-近似匹配允许 k 个失配
672Bitap 算法位动态规划
673Landau–Vishkin 算法编辑距离 ≤ k
674过滤算法快速近似搜索
675Wu–Manber多模式近似搜索
676流式 KMP在线前缀更新
677滚动哈希草图滑动窗口哈希
678基于草图的相似性MinHash / LSH 变体
679加权编辑距离加权操作
680在线 Levenshtein 距离动态流更新

69. 生物信息学比对 (Needleman–Wunsch, Smith–Waterman)

#算法备注
681Needleman–Wunsch全局序列比对
682Smith–Waterman局部比对
683Gotoh 算法仿射空位罚分
684Hirschberg 比对线性空间比对
685多序列比对 (MSA)渐进式方法
686谱比对序列与谱的比对
687隐马尔可夫模型比对概率比对
688BLAST启发式局部搜索
689FASTA基于词的比对
690成对 DP 比对通用 DP 框架

70. 文本索引与搜索结构

#算法备注
691倒排索引构建词到文档的映射
692位置索引存储词的位置
693TF-IDF 加权重要性评分
694BM25 排序现代排序公式
695字典树索引前缀搜索结构
696后缀数组索引子串搜索
697压缩后缀数组空间优化
698FM-索引基于 BWT 的压缩索引
699DAWG (有向无环词图)共享后缀图
700文本的小波树序列上的秩/选择操作

第八章 几何、图形与空间算法

71. 凸包(Graham, Andrew, Chan)

编号算法备注
701礼品包装法(Jarvis March)每次包裹一个点来构建凸包
702Graham 扫描法按角度排序,维护栈
703Andrew 单调链法按 x 坐标排序,构建上、下凸包
704Chan 算法输出敏感的 O(n log h) 算法
705QuickHull分治凸包算法
706增量凸包算法逐个添加点
707分治凸包算法合并两个部分凸包
708三维凸包扩展到三维几何
709动态凸包支持插入操作以维护凸包
710旋转卡壳法计算直径、宽度、对踵点对

72. 最近点对与线段相交

编号算法备注
711最近点对(分治法)分割、合并最小距离
712最近点对(扫描线法)维护活动窗口
713最近点对(暴力法)检查所有 O(n²) 对点
714Bentley–Ottmann 算法查找所有线段交点
715线段相交测试叉积方向判断
716线段扫描线法基于事件的相交检测
717基于方向的相交判断逆时针测试
718圆相交两圆的几何关系
719多边形相交裁剪重叠多边形
720最近邻点对结合 KD 树与搜索

73. 扫描线算法与平面扫描算法

编号算法备注
721事件扫描线法处理排序后的事件
722区间调度选择不重叠的区间
723矩形并集面积扫描边以计算面积
724线段相交(Bentley–Ottmann)检测所有交叉点
725天际线问题合并高度轮廓
726最近点对扫描法维护活动集
727圆排列扫描并计数区域
728重叠矩形扫描检测检测碰撞
729范围计数统计矩形内点数
730三角形平面扫描法多边形叠加计算

74. Delaunay 三角剖分与 Voronoi 图

编号算法备注
731Delaunay 三角剖分(增量法)添加点,维护 Delaunay 性质
732Delaunay(分治法)合并三角剖分
733Delaunay(Fortune 扫描法)O(n log n) 构造算法
734Voronoi 图(Fortune 算法)扫描线与海滩线
735增量 Voronoi 图插入时更新
736Bowyer–Watson 算法空圆准则
737对偶变换Voronoi 图与 Delaunay 三角剖分转换
738加权 Voronoi 图(Power Diagram)带权重的 Voronoi 图
739Lloyd 松弛算法平滑 Voronoi 单元
740Voronoi 最近邻查询基于区域的查找

75. 点是否在多边形内与多边形三角剖分

编号算法备注
741射线投射法计算边交叉次数
742环绕数法角度求和法
743凸多边形点测试方向检查
744耳切法三角剖分迭代移除"耳朵"
745单调多边形三角剖分扫描线三角剖分
746Delaunay 三角剖分最优三角形质量
747凸分解分割为凸部分
748多边形面积(鞋带公式)有符号面积计算
749闵可夫斯基和几何形状相加
750多边形相交(Weiler–Atherton)裁剪重叠形状

76. 空间数据结构(KD 树,R 树)

编号算法备注
751KD 树构建递归中位数分割
752KD 树搜索轴对齐查询
753KD 树范围搜索正交查询
754KD 树最近邻搜索最近点搜索
755R 树构建包围盒层次结构
756R* 树优化的分割策略
757四叉树空间分解
758八叉树三维空间分解
759BSP 树(二叉空间分割)平面分割
760Morton 顺序(Z 曲线)空间局部性索引

77. 光栅化与扫描线技术

编号算法备注
761Bresenham 直线算法高效的整数绘制
762中点圆算法圆的光栅化
763扫描线填充多边形内部填充
764边表填充按 y 坐标排序边
765Z 缓冲算法隐藏面消除
766画家算法按深度排序
767Gouraud 着色顶点插值着色
768Phong 着色法线插值
769抗锯齿(超采样)平滑锯齿边缘
770扫描线多边形裁剪高效裁剪

78. 计算机视觉(Canny, Hough, SIFT)

编号算法备注
771Canny 边缘检测器梯度 + 滞后阈值
772Sobel 算子梯度幅度滤波器
773Hough 变换(直线)用于直线检测的累加器
774Hough 变换(圆)基于半径的累加器
775Harris 角点检测器基于特征值的角点检测
776FAST 角点检测器强度圆测试
777SIFT(尺度不变特征变换)关键点检测
778SURF(加速鲁棒特征)更快的描述子
779ORB(定向 FAST + BRIEF)二进制鲁棒特征
780RANSAC鲁棒模型拟合

79. 空间路径规划(A*, RRT, PRM)

编号算法备注
781A* 搜索启发式路径规划
782网格上的 Dijkstra 算法加权最短路径
783Theta* 算法任意角度路径规划
784跳点搜索网格加速算法
785RRT(快速探索随机树)随机采样树
786RRT*带重连的优化变体
787PRM(概率路线图)图采样规划器
788可见性图连接可见顶点
789势场路径规划基于梯度的导航
790Bug 算法简单的避障算法

80. 计算几何变体与应用

编号算法备注
791凸多边形相交裁剪凸集
792闵可夫斯基和形状卷积
793旋转卡壳法最近/最远点对
794半平面交可行区域
795直线排列计数区域
796点定位(梯形图)查询区域查找
797Voronoi 最近设施查询区域查询
798Delaunay 网格生成三角剖分细化
799最小包围圆Welzl 算法
800碰撞检测(SAT)分离轴定理

第9章 系统、数据库与分布式算法

81. 并发控制(2PL、MVCC、OCC)

#算法备注
801两阶段锁(2PL)先获取锁,后释放锁
802严格两阶段锁持有锁直到提交
803保守两阶段锁通过预锁防止死锁
804时间戳排序按时间戳调度
805多版本并发控制(MVCC)快照隔离
806乐观并发控制(OCC)提交时验证
807可序列化快照隔离合并读/写集合
808无锁算法原子 CAS 更新
809等待-死亡 / 伤害-等待死锁预防策略
810死锁检测(等待图)在等待关系中检测循环

82. 日志、恢复与提交协议

#算法备注
811预写日志(WAL)提交前写日志
812ARIES 恢复算法使用 LSN 进行重做/撤销
813影子分页写时复制持久化
814两阶段提交(2PC)协调者驱动的提交
815三阶段提交(3PC)非阻塞变体
816检查点保存状态以便恢复
817撤销日志回滚未提交的事务
818重做日志重新应用已提交的事务
819法定人数提交多数同意规则
820共识提交结合 2PC 与 Paxos

83. 调度(轮询、最早截止时间优先、单调速率)

#算法备注
821先来先服务(FCFS)按作业到达顺序
822最短作业优先(SJF)最优平均等待时间
823轮询调度(RR)时间片公平性
824优先级调度加权选择
825多级队列分层优先级队列
826最早截止时间优先(EDF)实时系统最优
827单调速率调度(RMS)固定周期优先级
828彩票调度概率公平性
829多级反馈队列自适应行为
830公平队列(FQ)基于流的按比例共享

84. 缓存与替换策略(LRU、LFU、CLOCK)

#算法备注
831最近最少使用(LRU)驱逐最久未使用的
832最不经常使用(LFU)驱逐使用频率最低的
833先进先出缓存简单的队列驱逐策略
834CLOCK 算法近似 LRU
835自适应替换缓存(ARC)结合最近性与频率
836双队列(2Q)分离最近访问与频繁访问
837低互引用最近性集合(LIRS)预测重用距离
838TinyLFU基于频率草图准入
839随机替换简单的随机策略
840Belady 最优算法驱逐未来最远使用的

85. 网络(路由、拥塞控制)

#算法备注
841Dijkstra 路由算法最短路径路由
842Bellman–Ford 路由算法距离向量路由
843链路状态路由(OSPF)全局视图路由
844距离向量路由(RIP)本地邻居更新
845路径向量(BGP)路由通告
846泛洪广播到所有节点
847生成树协议无环拓扑
848拥塞控制(AIMD)TCP 窗口控制
849随机早期检测(RED)队列抢占式丢包
850显式拥塞通知(ECN)早期标记数据包

86. 分布式共识(Paxos、Raft、PBFT)

#算法备注
851基础 Paxos多数共识
852多 Paxos一系列协议
853Raft日志复制 + 领导者选举
854视图戳记复制替代的共识设计
855实用拜占庭容错(PBFT)拜占庭安全性
856Zab(Zookeeper 原子广播)广播 + 排序
857EPaxos无领导者快速路径
858虚拟环复制(VRR)日志沿环传递
859基于共识的两阶段提交事务提交
860链式复制有序状态复制

87. 负载均衡与速率限制

#算法备注
861轮询负载均衡顺序分配
862加权轮询按权重比例分配
863最少连接数选择负载最轻的节点
864一致性哈希稳定映射请求
865二选一策略采样并选择负载较轻的
866随机负载均衡简单的均匀随机分配
867令牌桶基于速率的限制器
868漏桶稳态流量整形
869滑动窗口计数器滚动时间窗口
870固定窗口计数器可重置的计数器限制器

88. 搜索与索引(倒排索引、BM25、WAND)

#算法备注
871倒排索引构建词项 → 文档列表
872位置索引构建存储词项位置
873TF-IDF 评分词频加权
874BM25 排序现代评分模型
875布尔检索逻辑与/或/非
876WAND 算法高效 top-k 检索
877块最大 WAND(BMW)早期跳过优化
878影响排序索引按贡献度排序
879分层索引优先处理高分文档
880DAAT 与 SAAT 评估逐文档 vs 逐评分

89. 系统中的压缩与编码

#算法备注
881游程编码(RLE)简单重复编码
882霍夫曼编码最优变长编码
883算术编码分数区间编码
884增量编码存储差值
885可变字节编码紧凑整数编码
886Elias Gamma 编码前缀整数编码
887Rice 编码一元码 + 余数方案
888Snappy快速块压缩
889Zstandard(Zstd)现代自适应编解码器
890LZ4高速字典压缩器

90. 容错与复制

#算法备注
891主-备份复制一个主节点,一个备用节点
892法定人数复制多数写/读规则
893链式复制有序一致性
894流言协议流行病式状态交换
895反熵修复定期调和
896纠删码冗余数据块
897校验和验证检测数据损坏
898心跳监控活性检测
899领导者选举(Bully)最高 ID 胜出
900领导者选举(Ring)基于令牌的轮转

第 10 章 人工智能、机器学习与优化

91. 经典机器学习 (k-means, 朴素贝叶斯, 支持向量机, 决策树)

#算法备注
901k-Means 聚类基于质心迭代进行划分
902k-Medoids (PAM)基于范例进行聚类
903高斯混合模型 (EM)软概率聚类
904朴素贝叶斯分类器基于特征独立的概率分类
905逻辑回归Sigmoid 线性分类器
906感知机在线线性分类器
907决策树 (CART)基于不纯度递归划分
908ID3 算法基于信息增益进行分裂
909k-最近邻 (kNN)基于距离的分类
910线性判别分析 (LDA)用于分离的投影方法

92. 集成方法 (Bagging, Boosting, 随机森林)

#算法备注
911Bagging自助聚合
912随机森林决策树的集成
913AdaBoost加权误差修正
914梯度提升序列残差拟合
915XGBoost优化的梯度提升
916LightGBM基于直方图的叶子生长
917CatBoost针对分类变量的有序提升
918Stacking元模型集成
919投票分类器多数聚合
920Snapshot Ensemble平均检查点

93. 梯度方法 (SGD, Adam, RMSProp)

#算法备注
921梯度下降批量全梯度步进
922随机梯度下降 (SGD)基于样本的更新
923小批量 SGD速度与方差的权衡
924动量法为下降添加速度
925Nesterov 加速梯度前瞻校正
926AdaGrad自适应逐参数学习率
927RMSProp指数移动平均
928Adam动量 + 自适应学习率
929AdamW解耦权重衰减
930L-BFGS有限内存拟牛顿法

94. 深度学习 (反向传播, Dropout, 归一化)

#算法备注
931反向传播梯度链式法则
932Xavier/He 初始化缩放方差初始化
933Dropout随机神经元失活
934批量归一化按批次归一化
935层归一化按特征归一化
936梯度裁剪防止梯度爆炸
937早停法防止过拟合
938权重衰减通过惩罚项进行正则化
939学习率调度动态学习率调整
940残差连接跳跃层改进

95. 序列模型 (Viterbi, 束搜索, CTC)

#算法备注
941隐马尔可夫模型 (前向-后向算法)概率序列模型
942Viterbi 算法最可能路径
943Baum–Welch 算法HMM 的 EM 训练
944束搜索前 k 路径探索
945贪婪解码快速近似解码
946连接时序分类 (CTC)未对齐序列训练
947注意力机制加权上下文聚合
948Transformer 解码器自注意力堆栈
949带注意力的 Seq2Seq编码器-解码器框架
950指针网络输出索引选择

96. 元启发式算法 (GA, SA, PSO, ACO)

#算法备注
951遗传算法 (GA)进化优化
952模拟退火 (SA)温度控制搜索
953禁忌搜索禁止移动的记忆
954粒子群优化 (PSO)基于速度的搜索
955蚁群优化 (ACO)信息素引导路径
956差分进化 (DE)基于向量的变异
957和声搜索音乐启发的即兴创作
958萤火虫算法亮度吸引移动
959蜂群优化通过侦察蜂进行探索-利用
960爬山法局部增量改进

97. 强化学习 (Q-learning, 策略梯度)

#算法备注
961蒙特卡洛控制平均回报
962时序差分 (TD) 学习自举更新
963SARSA同策略 TD 学习
964Q-Learning异策略 TD 学习
965双重 Q-Learning减少高估
966深度 Q 网络 (DQN)神经 Q 近似器
967REINFORCE基于采样的策略梯度
968演员-评论家价值引导的策略更新
969PPO (近端策略优化)裁剪替代目标
970DDPG / SAC连续动作强化学习

98. 近似算法与在线算法

#算法备注
971贪婪集合覆盖ln(n)-近似
972顶点覆盖近似双重匹配启发式
973旅行商问题近似基于 MST 的 2-近似
974k-中心近似最远点启发式
975在线分页 (LRU)竞争分析
976在线匹配 (Ranking)对抗性输入鲁棒性
977在线背包问题基于比率的接受
978竞争比评估最坏情况性能界限
979PTAS / FPTAS 方案多项式时间近似方案
980原始-对偶方法近似组合优化

99. 公平性、因果推断与鲁棒优化

#算法备注
981公平性重加权调整样本权重
982人口统计平等约束均衡正例率
983均衡几率对齐错误率
984对抗性去偏学习公平表示
985因果 DAG 发现图因果推断
986倾向得分匹配估计处理效应
987工具变量估计处理混杂因素
988鲁棒优化考虑最坏情况的优化
989分布鲁棒优化不确定性集上的极小极大优化
990反事实公平性模拟 do-干预

100. AI 规划、搜索与学习系统

#算法备注
991广度优先搜索 (BFS)无信息搜索
992深度优先搜索 (DFS)回溯搜索
993A* 搜索启发式引导
994迭代加深 A* (IDA*)内存受限的启发式搜索
995统一代价搜索按路径代价扩展
996蒙特卡洛树搜索 (MCTS)探索与利用
997极小极大算法博弈树评估
998Alpha–Beta 剪枝剪除不需要的分支
999STRIPS 规划基于动作的状态转换
1000分层任务网络 (HTN)结构化 AI 规划

基于 CC BY-NC-SA 4.0 许可协议发布