时间复杂度和空间复杂度的理解

本文深入解析算法的时间复杂度和空间复杂度概念,通过实例详细阐述如何计算和优化复杂度,帮助读者理解算法效率的关键指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间复杂度

时间复杂度指的是算法语句的执行次数,并不是运行时间。一个算法语句的执行次数最终都是可以通过函数f(n)来表示的

eg:

0da428a98ca18141e90b462f92f83d8defa.jpg

这里的x++就是算法语句,其f(n)=10-x

87f737f8e0d0f6f2bcea70a42a57115a90a.jpg

f(n)=n*n

b1fc3224c67a3336a1460954fb4a0135bfe.jpg

i++即算法语句,被执行次数为f(n)=n-i

但f(n)并不是时间复杂度,它还需要进行下转换

1.选取相对增长最高的项 
2.最高项系数是都化为1 
3.若是常数的话用O(1)表示 
如f(n)=2*n^3+2n+100则O(n)=n^3。

根据以上3个规则,前面三个例子的时间复杂度分别为

51b11fac80bed83aab42a5432658d142387.jpg

 

空间复杂度

空间复杂度就是一个算法在运行过程中临时占用的存储空间大小,换句话说就是被创建次数最多的变量,它被创建了多少次,那么这个算法的空间复杂度就是多少

eg:

d72f279c0bf6aacca3c95da9526dc0529ca.jpg

前者空间复杂度就是O(n),而后者空间复杂度就是O(1)常数阶。很好理解,前者每循环一次都会重新创建一个temp对象,而后者只在循环外面创建了一个temp对象,每次循环只是给他不同的引用而已。所以有个规律,如果算法语句中就有创建对象,那么这个算法的时间复杂度和空间复杂度一般一致,很好理解,算法语句被执行了多少次就创建了多少对象。

很多简单点的算法空间复杂度都是O(1),而且很多时候空间复杂度是不那么重要的,它远没有时间复杂度重要,很多时候会牺牲空间来迁就时间。

34561a650b7aca1eb0719e0116d0ac46a11.jpg

 

以下的这篇博客非常详尽的解释了时间和空间复杂度

https://blog.csdn.net/zolalad/article/details/11848739

 

 

转载于:https://my.oschina.net/u/4120977/blog/3098811

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值