数据结构-0-时间复杂度和空间复杂度

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. 用常数1取代运行时间中所有的加法常数,如O(1)
    2. 在修改后的运行次数憨厚,只保留最高阶数,如n2+n为O(n2)
    3. 如果最高阶数存在且不是1,则去除与这个项相乘的常数,如3n3为O(n3)
  • 常见时间复杂度:

    1. 常数阶


      数据结构-0-时间复杂度和空间复杂度_第1张图片
      常数阶
    2. 线性阶


      线性阶
    3. 对数阶


      数据结构-0-时间复杂度和空间复杂度_第2张图片
      对数阶
    4. 平方阶


      数据结构-0-时间复杂度和空间复杂度_第3张图片
      平方阶
    5. 对比图


      数据结构-0-时间复杂度和空间复杂度_第4张图片
      对比图
    6. 常用时间复杂度大小


      常用时间复杂度大小关系
  • 最坏时间复杂度:
    最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。 这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。

3. 空间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现,算法的空间复杂度的计算公式为: S(n) = O(f(n))。
通常没有特别指明时,复杂度指的是时间复杂度,我们写代码时,要学会以空间来换取时间。


参考:
大话数据结构开篇:时间复杂度和空间复杂度

你可能感兴趣的:(数据结构-0-时间复杂度和空间复杂度)