时间复杂度和空间复杂度

为了找到最适合当前问题而估量“算法”的评价s

时间复杂度空间复杂度
执行效率:根据算法编写出的程序,执行时间越短,效率就越高占用的内存空间:不同算法编写出的程序,执行时占用的内存空间也不相同。如果实际场景中仅能使用少量的内存空间,就要优先选择占用空间最少的算法

时间复杂度(时间复杂度用来预估算法的执行时间)

时间复杂度计算的执行步骤:

  1. 统计算法中各个步骤的执行次数
  2. 简化算法的执行次数(类似数学中的“求导”)
  3. 用大 O 标记法表示算法的时间复杂度 O (频度)

常用的几种时间复杂度的比较:

O( 1 ) < O( log(n) ) < O( n ) < O( n^2 ) < O( n^3 ) < O( 2^n )

空间复杂度(空间复杂度用来估算一个算法执行时占用的内存大小)

 空间复杂度计算的主要因素:

  • 程序代码本身所占用的存储空间
  • 如果需要输入输出数据,也会占用一定的存储空间
  • 运行过程中,可能还需要临时申请更多的存储空间(这种影响比较大)

空间复杂度的估算方法(按额外申请的算)
如果算法中额外申请的内存空间不受用户输入值的影响(是一个固定值),那么该算法的空间复杂度:O(1)
如果随着输入值 n 的增大,算法申请的存储空间成线性增长,则程序的空间复杂度是O(n)
如果随着输入值 n 的增大,程序申请的存储空间成 n^2 关系增长,则程序的空间复杂度用O(n^2)
如果随着输入值 n 的增大,程序申请的存储空间成 n^3 关系增长,则程序的空间复杂度用O(n^3)

(多数场景中,挑选 “好” 算法往往更注重的是时间复杂度,空间复杂度只要处于一个合理的范围即可)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值