【数据结构复杂度分析】

数据结构复杂度分析


一、时间复杂度

1.1 什么是时间复杂度

表示代码执行的快慢;
计算机智能执行最简单的操作,我们把每一次执行最短操作的时间定义为一个基本单位 step
时间复杂度计算就是计算整个代码从执行到结束一共走了多少个时间基本单位。

O表示法
当需要操作的数据量n足够大的时候,我们可以忽略一些常数项,这时候我们需要使用O(读音order,意为忽略重要项以外的) 去表示时间复杂度。

比如说下面这段代码的时间复杂度:

function order(n){ //1
    let time = 1; // 2 
    for (let i = 0; i < n.length; i++) { // 3
        for (let j = 0; j < n.length; j++) { // 4
           time += i; // 5
        }
    }
}
/*  
 2 1step
 3 nstep
 4 n * n step
 5 n * n step
 总的时间复杂度  (2nˆ2 + n + 1)step
 n足够大的时候忽略常数项
 O(nˆ2) 
 */

上述代码时间复杂度为(2nˆ2 + n + 1)step使用O表示法即为O(nˆ2)

1.2 如何快速计算时间复杂度

在一段代码中,当数据量足够大的时候我们往往可以忽略常数项,所以可以忽略一些简单的操作,比如上述代码的第二行。往往我们只需要计算循环代码次数最多的那段代码的时间复杂度
嵌套代码的时间复杂度等于嵌套内外时间复杂度的乘积,例如上述代码的3-5行

关于随着表达式n值的增长速率: ![关于随着表达式n值的增长速率]

关于随着表达式n值的增长速率

1.3 常见的时间复杂度

以下时间复杂度递增,

  1. O(1)
  2. O(logn)
  3. O(n)
  4. O(nlogn)
  5. O(nˆ2)
  6. O(nˆ3)
  7. O(zˆn)
  8. O(n!)

⚠️ 对于执行次数为100次或者1000次这种有确定的常数项的时间复杂度用O表示法的时候可以表达为O(1) ,但是并不是只执行了一次。

二、空间复杂度

2.1什么是空间复杂度?

表示内存的消耗,
将申请一个空间存储变量为step,整个代码执行起来所消耗的存储空间。
(其实和时间复杂度概念比较类似,一个计算执行时间,一个计算消耗的内存空间)

2.2 常见的空间复杂度

  1. O(1)
  2. O(n)
  3. O(nˆ2)

总结

  1. 时间复杂度计算代码执行的时间,可以表示代码执行的快慢
  2. 空间复杂度计算代码消耗的内存
  3. O只是一个忽略重要项以外的一个表达式?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值