iOS开发

时间和空间复杂度

2021-10-13  本文已影响0人  Jabir_Zhang

算法复杂度

算法复杂度分为\color{red}{时间复杂度}\color{red}{空间复杂度}

时间复杂度代表「时效(运行时间)」和空间复杂度代表「存储(占用空间)」

我们都是用“时间复杂度”来指运行时间的需求,是用“空间复杂度”指空间需求。一般说的“复杂度” ,通常指的是时间复杂度

事例场景:

总结

计算公式坐标轴.png

这四种时间复杂度究竟谁用时更长,谁节省时间呢?
根据斜率,得出结论:
O(1) < O(log_2{n}) < O(n) < O(n^2)
常用的时间复杂度所耗费的时间从小到大依次是:�
O(1) < O(log{n}) < (n) < O(nlog{n}) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

复杂度与效率挂钩

我们来举一个栗子:

算法A的相对时间规模是T(n) = 100n,时间复杂度是O(n)
算法B的相对时间规模是T(n) = 5n^2,时间复杂度是O(n^2)
算法A运行在小灰家里的老旧电脑上,算法B运行在某台超级计算机上,运行速度是老旧电脑的100倍。
那么,随着输入规模 n 的增长,两种算法谁运行更快?

运算次数.png

推导时间复杂度

如何推导出时间复杂度呢?有如下几个原则:

Ο(log_2{n})、Ο(n)、 Ο(nlog_2{n})、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2^n)和Ο(n!)称为指数时间。计算机科学家普遍认为前者(即多项式时间复杂度的算法)是有效算法,把这类问题称为P(Polynomial,多项式)类问题,而把后者(即指数时间复杂度的算法)称为NP(Non-Deterministic Polynomial, 非确定多项式)问题。

上一篇 下一篇

猜你喜欢

热点阅读