杂文笔记(四):算法的空间复杂度与时间复杂度

  算法的时间复杂度和空间复杂度:从耗费的时间资源和空间资源角度衡量不同算法的优劣。

时间复杂度好算,但空间复杂度感觉和编程语言的内置函数有关,由于对函数不了解导致很多时候并不清楚是否开辟了新的内存空间。

时间复杂度

算法花费的时间与算法中语句的执行次数成正比例。

lim ⁡ n → ∞ T ( n ) f ( n ) = c \lim _{n \rightarrow ∞} \frac{T(n)}{f(n)}=c limnf(n)T(n)=c,c为常数。

问题规模为n时,算法中语句执行次数记为时间频度 T ( n ) T(n) T(n)。时间复杂度定义为时间频度的等阶函数 f ( n ) f(n) f(n)的量级 O ( f ( n ) ) O(f(n)) O(f(n))

常见的时间复杂度量级:

项目Value
常数阶 O ( 1 ) O(1) O(1)
对数阶 O ( log ⁡ N ) O( \log \mathrm{N} ) O(logN)
线性阶 O ( n ) O(n) O(n)
线性对数阶 O ( n l o g N ) O(nlogN) O(nlogN)
平方阶 O ( n 2 ) O\left(n^{2}\right) O(n2)
立方阶 O ( n 3 ) O\left(n^{3}\right) O(n3)
K \mathrm{K} K 次方阶 O ( n k ) \mathrm{O}\left(\mathrm{n}^{\mathrm{k}}\right) O(nk)
指数阶 O ( 2 n ) O\left(2^{n}\right) O(2n)

空间复杂度

  算法的空间复杂度(Space Complexity)- S ( n ) S(n) S(n)-定义为该算法所耗费的存储空间。
  算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)。

常数空间:O(1)
多开一个辅助的数组:O(N)
多开一个辅助的二维数组:O(N^2)
对于递归调用:递归深度=空间复杂度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值