时间复杂度和空间复杂度

一、何谓时间复杂度

1、时间复杂度基本概念

算的不是时间,可根据时间复杂度判断算法属于哪个量级,是否具有实际意义

2、时间复杂度实际意义

对算法对时间的开销进行评估

3、常见复杂度阶别 

       

二、几种情况下时间复杂度的计算

1、递归下时间复杂度计算

即递归下时间复杂度等于所有递归调用次数累加

2、计算斐波那契数列时间复杂度

每次调用内部开销为常数次,将所有调用次数相加则得时间复杂度为O(2^n)

注意:此算法实际意义不大,对时间开销太大

优化版本:递归改循环,时间复杂度O(n)

暂不考虑溢出

三、空间复杂度

常见空间复杂度:

O(1)、O(n)、O(n^2)

常数、一维数组、二维数组

思考:

递归下斐波那契数列的空间复杂度?

首先我们需要知道栈空间是可以重复利用的。

计算斐波那契数列数列时,系统并不会同时进行所有Fib()函数的计算,而是按照一定顺序进行的,这个顺序是从Fib(N)直接一直算到Fib(2),中间的其余Fib()函数并未进行计算,此时调用不同Fib()函数个数所占栈空间达到最大为n-1,之后由于Fib(2)满足if限制条件计算完毕,开始返还栈空间,这部分栈空间就被Fib(1)重复利用进行计算,然后再返还。

其余计算以此进行,所以栈空间被占到最大为n-1,空间复杂度为O(n)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好想当只懒羊羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值