时间复杂度的计算

  • 时间复杂度

    时间复杂度是指程序运行从开始到结束所需要的时间。

    一个算法是由**控制结构(顺序、分支、循环)原操作(固有数据类型的操作)**构成的,则算法时间取决于两者的综合效果。

    直接计算时间复杂度是比较麻烦的,一般从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间度量。

    时间频度,又称为语句频度,一个算法中的语句执行次数,记为 T ( n ) T(n) T(n).

    基本操作应是其重复执行次数和算法时间成正比的原操作,多数情况下它是最深层循环内的语句中的操作。

    算法的执行次数还要随输入集有关,此时要考虑所有可能输入数据的期望值,此时的算法时间复杂度叫平均时间复杂度

    如果平均时间复杂度难以确定,此时分析最坏情况下的一个上届,称为最坏时间复杂度

  • 时间复杂度的表示方法

    n n n:解决一个问题的规模;

    f ( n ) f(n) f(n):基本操作被重复执行次数;

    T ( n ) = O ( f ( n ) ) T(n)=O(f(n)) T(n)=O(f(n))(渐进)时间复杂度。表示随着问题规模 n n n的增长,算法执行时的增长率和 f ( n ) f(n) f(n)的增长率相同。

    算法的时间复杂度考虑的只是对于问题规模 n n n增长率,则在难以精确计算的情况下,只需考虑它关于 n n n增长率即可。

  • 时间复杂度的计算方法

    当有多个循环,计算每个循环的时间复杂度,并相加,再利用下面的简化法则。

    (针对已经计算好的运行时间进行简化)

    1. 用常数1取代运行时间中的所有加法常数;
    2. 在修改后的运行次数函数中,只保留最高阶项;
    3. 如果最高阶项存在且不是1,则去除与这个项相乘的常数;
  • 时间复杂度常见类型

    1. 常数阶
    2. 对数阶
    3. 线性阶
    4. 线性对数
    5. 平方阶
    6. 立方阶
    7. k次方阶
    8. 指数阶
  • References

  1. 常用算法时间复杂度的计算方法

  2. 第14话:如何计算算法的时间复杂度

  3. 算法复杂度

  4. 算法的复杂度问题

你可能感兴趣的:(#,小白学Python,时间复杂度)