码迷,mamicode.com
首页 > 其他好文 > 详细

时间复杂度与空间复杂度

时间:2018-12-14 00:56:02      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:渐进   最大   为什么   线性   参数   之间   循环   环境   控制   

18年互联网寒冬,特别是游戏行业,版号一年没发。待经济春暖花开之时,也让自己在行业行业中增加竞争力。

为什么要进行复杂度分析?
1.和性能测试相比, 复杂度分析有不依赖执行环境、 成本低、 效率高、 易操作、 指导性强的特点。
2.掌握复杂度分析, 将能编写出性能更优的代码, 有利于降低系统开发和维护成本。

时间复杂度:时间复杂度是衡量一个算法重要的指标之一,当数据量越大,算法的效率也就越能体现出来,以时间复杂度为例, 由于时间复杂度描述的是算法执行时间与数据规模的增长变化趋势, 所以常量阶、 低阶以及系数实际上对这种增长趋势不产决定性影响, 所以在做时间复杂度分析时忽略这些项。

时间负责度特点如下:

  • 只关注循环执行最多的一段代码
  • 加法原则,总复杂度等于量级最大的复杂度
  • 嵌套代码的复杂度等于嵌套内代码复杂度的乘积

俗称:

  1) 单段代码看高频: 比如循环。
  2) 多段代码取最大: 比如一段代码中有单循环和多重循环, 那么取多重循环的复杂度。
  3) 嵌套代码求乘积: 比如递归、 多重循环等
  4) 多个规模求加法: 比如方法有两个参数控制两个循环的次数, 那么这时就取二者复杂度相加。
常用的复杂度级别:
  多项式阶: 随着数据规模的增长, 算法的执行时间和空间占用, 按照多项式的比例增长。 包括,O(1)(常数阶) 、 O(logn)(对数阶) 、 O(n)(线性阶) 、 O(nlogn)(线性对数阶) 、 O(n^2)(平方阶) 、 O(n^3)(立方阶)。
  非多项式阶: 随着数据规模的增长, 算法的执行时间和空间占用暴增, 这类算法性能极差。 包括,O(2^n)(指数阶) 、 O(n!)(阶乘阶) 。

空间复杂度:

  算法的指标中空间复杂度也是一个重要的指标。空间复杂度的全称是渐进空间复杂度,表示算法的存储空间与数据规模之间的增长关系。

  我们常见的空间复杂度就是 O(1)O(n)O(n ), 像 O(logn)O(nlogn) 这样的对数阶复杂度平时很少用。

 

时间复杂度与空间复杂度

标签:渐进   最大   为什么   线性   参数   之间   循环   环境   控制   

原文地址:https://www.cnblogs.com/huangzhenxiong/p/10117081.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!