常见时间复杂度

本文总结了基础算法如快速排序和字符串算法的复杂度,包括KMP、Trie和AC自动机。图论部分涵盖了并查集、Prim和Kruskal等经典算法。数据结构部分介绍了二叉堆、树状数组和ST表等。动态规划涉及区间DP和树形DP。数学技巧如快速幂和埃氏筛也在文中提及。最后,文章还提到了关键开发工具和前沿技术如平衡树和DevOps实践。

一、基础算法

快速排序 O(nlog⁡n)O(n\log n)O(nlogn)

归并排序 O(nlog⁡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(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)log⁡m)O((n+m)\log m)O((n+m)logm)

Kruskal\text{Kruskal}Kruskal O(mlog⁡m)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)log⁡m)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(nmlog⁡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(nlog⁡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(nlog⁡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(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(log⁡n)O(\log n)O(logn)

埃氏筛 O(nlog⁡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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值