时间复杂度与空间复杂度

相信大家一定有和我一样的情况,学了了很久的数据结构和算法,但是对于空间复杂度和时间复杂度都有点模糊,有时候不懂得怎么去计算。接下来,我看了很多的资料,总结出来一部分东西,希望有用。

首先,我们来看看官方的解释:

时间复杂度: 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

我们通常用大写O来表示时间复杂度,遇到求时间复杂度的问题,我们可以按照以下几种办法来进行计算:

1.1来取代时间中所有加法常数,记做 O(1);

2.修改后运行次数,只保留最高项。如:2n^2+2n的时间复杂度是O(n^2);

3.如果最高项存在且不是1,则去除与这个项相乘的常数。比如:3n^3的时间复杂度为O(n^3);

时间复杂度耗时时间从小到大为:

O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)

这个表格说明了常见的时间复杂度:

例子

时间复杂度

术语

12152002

O(1)

常数阶

3n+4

O(n)

线性阶

5n^2+9n+5

O(n^2)

平方阶

5log(2)n+6

O(logn)

对数阶

6n+6nlog(2)+15

O(nlogn)

nlogn阶

n^3+n^2+5n+6

O(n^3)

立方阶

2^n

O(2^n)

指数阶

 

空间复杂度: 是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算时通常是反复调用同一个方法,递归n次,就需要n个空间。与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作: S(n)=O(f(n))我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。

 

注意:但是一般说的复杂度是时间复杂度,空间复杂度用的比较少。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值