时间复杂度和空间复杂度的简单介绍

时间复杂度的定义: : 在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

在我看来 简单来说就是:一个程序跑完的快慢程度,
这样的我们用大O()表示 : 一般常见的表示方法是
O(1)[这样的表示方法为走了常数项,无论是10次,1000次,哪怕是100万次,是常数就是O(1)的时间复杂度],
O(N), O(N^2),
O(logN)[这里说明一下,logN表示为log以2为底 N的对数 ,不像是数学上面的以10为底],
O(logN*N);

下来就举一些常见的例子 来看一下:
(1) 在循环中的变量是常数变量时
在这里插入图片描述
(2) 当里面有循环的时候,//需要注意不一定是有用的,在接下来第三点会介绍
在这里插入图片描述
(3) 就是不但和循环有关,也和里面的条件有关
在这里插入图片描述
这就是 时间复杂度的大致内容,应该不是很难,下来我问就一起看看空间复杂度和时间复杂度一起,下面的题目也是我们常见的,
对了 ,我们先一起看看空间复杂度定义:是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。
(1)递归的算法 (这里的图片来自于比特科技版权所有)
在这里插入图片描述
这里的时间复杂度为O(2^N); 理由:8通过计算分析发现基本操作递归了2N次,时间复杂度为O(2N)
空间复杂度为O(N) 理由:递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。
(2)斐波那契数
在这里插入图片描述
有这个图片可以知道算出空间复杂度;O(N);因为动态开辟了N个空间
在这里插入图片描述
下面的时间复杂度为O(2N);通过计算分析发现基本操作递归了2N次。

(3)看一下下面的空间复杂度:
在这里插入图片描述
空间复杂度为O(1);原因不难看出 使用了常数个额外空间,但是时间复杂度可不是O(1)。一定要记住,应为end = n,下面还有循环,所以时间复杂度坑定不是O(1);

谢谢大家观看 ,如果有什么问题下方留言,
这里比较基础,如果想更加深入的话,可以去找一下资料,巩固自己,加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值