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 许可协议发布