首页 > 技术文章 > 各种算法时空复杂度

zwfymqz 2017-11-07 21:44 原文

暂时先整理这么多,

时间比较仓促,肯定有错的地方,如果您有疑问欢迎提出

以后随学随整理吧

数据结构

线段树:

时间复杂度

查询、修改:$O(logn)$

建树:$O(n*logn)$

空间复杂度

$O(4*n)$ ,用dfs序可优化至$O(2*n)$

树状数组

时间复杂度

查询、修改:$O(logn)$

空间复杂度

$O(n)$ 

单调队列、单调栈

时间复杂度

$O(n)$

空间复杂度

$O(n)$

时间复杂度

建堆$O(n)$

查询$O(1)$

插入$O(logn)$

删除$O(1)$

空间复杂度

$O(n)$

倍增

时间复杂度

预处理:$O(n*logn)$

查询:$O(1)$

空间复杂度

$O(n*logn)$

并查集

时间复杂度

预处理:$O(n)$

查询:$O(\alpha (n)^{-1})$(n的反阿克曼函数

合并:$O(1)$

空间复杂度

$O(n)$

链表

时间复杂度

修改:$O(1)$

查询:$O(n)$

空间复杂度

$O(n)$

数组

时间复杂度

修改:$O(n)$

查询:$O(1)$

空间复杂度

$O(n)$

 

最短路

Floyd

时间复杂度

$O(n^3)$ 多源最短路

空间复杂度

$O(n^2)$

SPFA

时间复杂度

$O(k*e)$ k:平均入队次数,大约为2,当然也有例外情况,单源最短路,支持负权边

空间复杂度

$O(e)$

Dijkstra

时间复杂度

$O(n^2)$

堆优化:$O(n*logn)$ 

空间复杂度

$O(e)$

 

最小生成树

prime

时间复杂度

$O(n^2)$

堆优化:$O(n*logn)$ 

空间复杂度

$O(e)$

kruskal

时间复杂度

$O(e*loge)$

空间复杂度

$O(e)$

 

字符串

kmp

时间复杂度

$O(m+n)$设n,m为两个串的长度

空间复杂度

$O(m+n)$

 

AC自动机

时间复杂度

$O(A+S)$设A是文章长度,S是单词串总长

空间复杂度

$O(A*26)$ //这个我也不太确定,,

manacher

时间复杂度

$O(S)$设S字符串长度

空间复杂度

$O(S)$

扩展KMP

时间复杂度

$O(S)$设S字符串长度

空间复杂度

$O(S)$

后缀数组

时间复杂度

$O(S*logS)$设S字符串长度

空间复杂度

$O(S)$

数论

快速幂

时间复杂度

$O(log(n))$设n为指数

空间复杂度

$O(1)$

扩展欧几里得

时间复杂度

$O(log(b))$设a>=b>=1

空间复杂度

$O(1)$

中国剩余定理

时间复杂度

$O(n*log(m))$设n为式子的个数,m是模数

空间复杂度

$O(n)$

素数筛法

时间复杂度

http://www.cnblogs.com/zwfymqz/p/7794782.html

埃拉托斯特尼筛法非优化版$O(n*logn)$
埃拉托斯特尼筛法优化版$O(n*log^{logn})$
欧拉筛$O(n)$

空间复杂度

$O(n)$

矩阵乘法

时间复杂度

$O(log(n))$设n为指数

空间复杂度

$O(r*c)$ r,c为矩阵的长和宽

 

推荐阅读