1. 算法的复杂度:
- 算法的复杂度分为时间复杂度和空间复杂度。
- 时间复杂度,是衡量算法执行时间的长度;
- 空间复杂度,是衡量算法存储空间的大小;
2. 时间复杂度
-
时间频度: 一个算法中语句执行次数,记为T(n);
-
时间复杂度:描述T(n)的变化规律,记作:T(n)=O(f(n));
- 大O记法:用来体现算法复杂度的标记。一般情况下,随着n的增大,T(n)增长最慢的称为最优算法。
- 时间频度不同,但时间复杂度可能相同。如:T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。
-
推导大O阶:
- 用常数1取代运行时间中所有的加法常数,如O(1)
- 在修改后的运行次数憨厚,只保留最高阶数,如n2+n为O(n2)
- 如果最高阶数存在且不是1,则去除与这个项相乘的常数,如3n3为O(n3)
-
常见时间复杂度:
-
常数阶
常数阶 -
线性阶
线性阶 -
对数阶
对数阶 -
平方阶
平方阶 -
对比图
对比图 -
常用时间复杂度大小
常用时间复杂度大小关系
-
-
最坏时间复杂度:
最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。 这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。
3. 空间复杂度
算法的空间复杂度通过计算算法所需的存储空间实现,算法的空间复杂度的计算公式为: S(n) = O(f(n))。
通常没有特别指明时,复杂度指的是时间复杂度,我们写代码时,要学会以空间来换取时间。
网友评论