一、基础算法
快速排序 O ( n log n ) O(n\log n) O(nlogn)
归并排序 O ( n log n ) O(n\log n) O(nlogn)
桶排序 O ( n ) O(n) O(n)
二分 O ( log n ) O(\log n) O(logn)(一般情况下)
倍增 O ( log n ) O(\log n) O(logn)
DFS \text{DFS} DFS算法 一般为指数级
二、字符串算法
KMP \text{KMP} KMP O ( m + n ) O(m+n) O(m+n)
Trie \text{Trie} Trie树 插 入 O ( l e n s ) , 查 询 O ( l e n s ) 插入O(len_s),查询O(len_s) 插入O(lens),查询O(lens)
AC \text{AC} AC自动机 建 立 O ( ∑ l e n 模式串 ) , 匹 配 O ( l e n 文本串 ) 建立O(\sum len_\text{模式串}),匹配O(len_\text{文本串}) 建立O(∑len模式串),匹配O(len文本串)
三、图论算法
并查集 O ( α ( n ) ) O(\alpha(n)) O(α(n))(路径压缩+按秩合并)
图的 DFS \text{DFS} DFS遍历和 BFS \text{BFS} BFS遍历 O ( n + m ) O(n+m) O(n+m)(链式前向星)
朴素 Prim \text{Prim} Prim O ( n 2 ) O(n^2) O(n2)
优先队列优化 Prim \text{Prim} Prim O ( ( n + m ) log m ) O((n+m)\log m) O((n+m)logm)
Kruskal \text{Kruskal} Kruskal O ( m log m ) O(m\log m) O(mlogm)
Floyd \text{Floyd} Floyd O ( n 3 ) O(n^3) O(n3)
朴素 Dijkstra \text{Dijkstra} Dijkstra O ( n 2 ) O(n^2) O(n2)
优先队列优化 Dijkstra \text{Dijkstra} Dijkstra O ( ( n + m ) log m ) O((n+m)\log m) O((n+m)logm)
Bellman-Ford \text{Bellman-Ford} Bellman-Ford O ( n m ) O(nm) O(nm)
SPFA \text{SPFA} SPFA 随 机 数 据 O ( k m ) , 构 造 数 据 O ( n m ) 随机数据O(km),构造数据O(nm) 随机数据O(km),构造数据O(nm)
Johnson \text{Johnson} Johnson全源最短路径 O ( n m log m ) O(nm\log m) O(nmlogm)
Tarjan \text{Tarjan} Tarjan强连通分量 O ( n + m ) O(n+m) O(n+m)
Tarjan \text{Tarjan} Tarjan割点割桥 O ( n + m ) O(n+m) O(n+m)
倍增 LCA \text{LCA} LCA 预 处 理 O ( n log n ) , 查 询 O ( log n ) 预处理O(n\log n),查询O(\log n) 预处理O(nlogn),查询O(logn)
四、数据结构
二叉堆 插 入 O ( log n ) , 删 除 O ( log n ) 插入O(\log n),删除O(\log n) 插入O(logn),删除O(logn)
树状数组 插 入 O ( log n ) , 查 询 O ( log n ) 插入O(\log n),查询O(\log n) 插入O(logn),查询O(logn)
线段树 插 入 O ( log n ) , 查 询 O ( log n ) 插入O(\log n),查询O(\log n) 插入O(logn),查询O(logn)
ST \text{ST} ST表 预 处 理 O ( n log n ) , 查 询 O ( 1 ) 预处理O(n\log n),查询O(1) 预处理O(nlogn),查询O(1)
朴素 BST \text{BST} BST 随 机 数 据 O ( log n ) , 构 造 数 据 O ( n ) 随机数据O(\log n),构造数据O(n) 随机数据O(logn),构造数据O(n)
平衡树 几 乎 所 有 操 作 O ( log n ) 几乎所有操作O(\log n) 几乎所有操作O(logn)
五、动态规划
区间 DP \text{DP} DP O ( n 3 ) O(n^3) O(n3)(一般情况下)
树形 DP \text{DP} DP O ( n ) O(n) O(n)(一般情况下)
状压 DP \text{DP} DP O ( 2 n ) O(2^n) O(2n)(一般情况下)
六、数学
快速幂 O ( log n ) O(\log n) O(logn)
埃氏筛 O ( n log log n ) O(n\log\log n) O(nloglogn)
线性筛 O ( n ) O(n) O(n)
gcd \text{gcd} gcd O ( log n ) O(\log n) O(logn)
exgcd \text{exgcd} exgcd O ( log n ) O(\log n) O(logn)
线性乘法逆元 O ( n ) O(n) O(n)