醉丶春风的Blog

千里之行, 始于足下



时间复杂度与空间复杂度


时间复杂度

时间复杂度实际上并不具体表示代码真正的执行时间,而是表示代码执
行时间随数据规模增长的变化趋势,所以,也叫作渐进时间复杂度(asymptotic timecomplexity),简称时间复杂度。
常见的时间复杂度有:

  • O(1): 常量级, 不管数据规模有多大, 都不影响执行效率
  • O(n): 线性级, 比如遍历, 就属于线性级
  • O(n^2): 指数级, 比如冒泡排序, 耗时呈指数增长, 当输入为n时,耗时为n^2次方
  • O(logn): 对数级, 比如二分查找, 当输入为256时, 只需要查找8次就可以找到结果
  • O(nlogn): 线性对数阶, 为 n*logn, 当数据增大256倍是, 耗时增大256*logn(8)倍, 也就是256*8=2048倍,这个复杂度高于线性低于平方

关于他们的排序为
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)

空间复杂度

指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
空间复杂度全称就是渐进空间复杂度(asymptotic space complexity),表示算法的存储空间与数据规模之间的增长关系

空间复杂度比较常用的有:O(1)、O(n)、O(n²)


作者: 徐善通
地址: https://xstnet.com/article-110.html
声明: 除非本文有注明出处,否则转载请注明本文地址


我有话说



最新回复


正在加载中....

Copyrights © 2016-2019 醉丶春风 , All rights reserved. 皖ICP备15015582号-1