数据结构-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. 常数阶


      常数阶
    2. 线性阶


      线性阶
    3. 对数阶


      对数阶
    4. 平方阶


      平方阶
    5. 对比图


      对比图
    6. 常用时间复杂度大小


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

3. 空间复杂度

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容