时间和空间复杂度

时间和空间复杂度

时间复杂度和空间复杂度分别用来衡量程序在运行中随着数据规模增长带来的时间和空间上的变化,所以其实全称应该叫做渐进时间复杂度和渐进空间复杂的。

为什么要学习时间和空间复杂度,通过代码或者其他工具不能衡量程序性能吗?

通过代码中埋点或者一些测试、运维、性能监控工具当然能够衡量程序消耗的时间和空间,而且还比时间空间复杂的更加的精确,但是这种方式也有其局限性。

受硬件影响

很好理解,同样的代码,在不同配置的服务器上性能是完全不一样的。这样的话,可能我们写的代码在公司自己的服务器跑的飞起,结果部署到客户方直接就内存泄漏了。

受数据规模影响

同样的代码,同样的算法,在不同的数据规模下的表现可能大相径庭。而且如果数据量非常之大,跑一遍代码的代价就非常大了,可能花我几个小时的时间。

常见的时间复杂度

常见的时间复杂度

其中比较复杂的可能就是对数阶时间复杂度了,可以参考以下推导文章:
等比数列公式推导

最好和最坏时间复杂度

这个很好理解,比如在一个循环中,当满足某个条件的时候就退出循环。这种情况最理想的就是,循环第一次的时候满足条件退出,时间复杂度为O(1),而最不理想的情况就是循环到最后一个都没有满足条件的,时间复杂度为O(n)。

平均和均摊时间复杂度

平均时间复杂度和均摊时间复杂度很像,实际上可以说均摊时间复杂度就是一种特殊的平均时间复杂度。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文为自己的学习笔记,仅供自我学习,学习资料极客时间的王争的《算法与数据结构之美》。 一.基础概念 时间复杂度表示...
    不够果断是种癌阅读 3,440评论 5 12
  • 算法的选择 我们都知道同一个问题有不同的算法解决,这些算法在运行时间、运行占用内存、代码易读性等方面都不相同,而在...
    Java资讯库阅读 22,014评论 1 19
  • 释义 1.数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。2.因此需从执行时间和占用空间两个维度...
    lesdom阅读 451评论 0 1
  • 今天我的作业出错很多很多,昨天有一道题,我不会,爸爸给我讲了,今天我又忘了,语文作业没有错,我不只是做对了爸爸,让...
    明月_ca56阅读 171评论 0 0
  • 参考文章: JSX 简介 重拾JSX JSX,了解一下? 在react中想将js当作变量引入到jsx中需要使用{}...
    chrisghb阅读 148评论 0 0