一、基础算法
快速排序 O(nlogn)O(n\log n)O(nlogn)
归并排序 O(nlogn)O(n\log n)O(nlogn)
桶排序 O(n)O(n)O(n)
二分 O(logn)O(\log n)O(logn)(一般情况下)
倍增 O(logn)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(lens),查询O(lens)插入O(len_s),查询O(len_s)插入O(lens),查询O(lens)
AC\text{AC}AC自动机 建立O(∑len模式串),匹配O(len文本串)建立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(n2)O(n^2)O(n2)
优先队列优化Prim\text{Prim}Prim O((n+m)logm)O((n+m)\log m)O((n+m)logm)
Kruskal\text{Kruskal}Kruskal O(mlogm)O(m\log m)O(mlogm)
Floyd\text{Floyd}Floyd O(n3)O(n^3)O(n3)
朴素Dijkstra\text{Dijkstra}Dijkstra O(n2)O(n^2)O(n2)
优先队列优化Dijkstra\text{Dijkstra}Dijkstra O((n+m)logm)O((n+m)\log m)O((n+m)logm)
Bellman-Ford\text{Bellman-Ford}Bellman-Ford O(nm)O(nm)O(nm)
SPFA\text{SPFA}SPFA 随机数据O(km),构造数据O(nm)随机数据O(km),构造数据O(nm)随机数据O(km),构造数据O(nm)
Johnson\text{Johnson}Johnson全源最短路径 O(nmlogm)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(nlogn),查询O(logn)预处理O(n\log n),查询O(\log n)预处理O(nlogn),查询O(logn)
四、数据结构
二叉堆 插入O(logn),删除O(logn)插入O(\log n),删除O(\log n)插入O(logn),删除O(logn)
树状数组 插入O(logn),查询O(logn)插入O(\log n),查询O(\log n)插入O(logn),查询O(logn)
线段树 插入O(logn),查询O(logn)插入O(\log n),查询O(\log n)插入O(logn),查询O(logn)
ST\text{ST}ST表 预处理O(nlogn),查询O(1)预处理O(n\log n),查询O(1)预处理O(nlogn),查询O(1)
朴素BST\text{BST}BST 随机数据O(logn),构造数据O(n)随机数据O(\log n),构造数据O(n)随机数据O(logn),构造数据O(n)
平衡树 几乎所有操作O(logn)几乎所有操作O(\log n)几乎所有操作O(logn)
五、动态规划
区间DP\text{DP}DP O(n3)O(n^3)O(n3)(一般情况下)
树形DP\text{DP}DP O(n)O(n)O(n)(一般情况下)
状压DP\text{DP}DP O(2n)O(2^n)O(2n)(一般情况下)
六、数学
快速幂 O(logn)O(\log n)O(logn)
埃氏筛 O(nloglogn)O(n\log\log n)O(nloglogn)
线性筛 O(n)O(n)O(n)
gcd\text{gcd}gcd O(logn)O(\log n)O(logn)
exgcd\text{exgcd}exgcd O(logn)O(\log n)O(logn)
线性乘法逆元 O(n)O(n)O(n)
本文总结了基础算法如快速排序和字符串算法的复杂度,包括KMP、Trie和AC自动机。图论部分涵盖了并查集、Prim和Kruskal等经典算法。数据结构部分介绍了二叉堆、树状数组和ST表等。动态规划涉及区间DP和树形DP。数学技巧如快速幂和埃氏筛也在文中提及。最后,文章还提到了关键开发工具和前沿技术如平衡树和DevOps实践。

1867

被折叠的 条评论
为什么被折叠?



