第一节:复杂度介绍

本文介绍了时间复杂度的概念,强调在算法分析中通常只关注最高阶项。解释了为什么在N趋近无穷大时,常数项和其他低阶项可忽略。讨论了相同阶数时间复杂度下常数项的重要性,并列举了一些常见的时间复杂度。此外,还解释了常数时间操作,如算术和位运算,并区分了额外空间复杂度与功能所需空间的区别。
摘要由CSDN通过智能技术生成

时间复杂度

刚学算法的小伙伴可能会有一个疑问,什么是时间复杂度?时间复杂度怎么估算?

一般来说时间复杂度是确定算法流程的总操作数量与样本数量之间的表达式关系,并且只看表达式最高阶项的部分

为什么只看最高阶项?
100W * N^3 + 200W * N^2 + 300W
当N趋近于无穷大的时候,真正起到决定性作用的就是N^3,
N^2以及其它常数项的影响都可以忽略掉了

比如我们自己做一件事情,估算时间的时候可能会说:完成这件事需要一周。
但是没有人说完成这件事需要一周零五小时
所以生活中我们估算一个时间的时候就已经将影响较小的因素给忽略掉了

如果两个算法阶数一样,就需要考虑常数项时间了
如果是O(N^ 3) 和 O(N^2),那么没有可比性
但是如果都是O(n^2)就要看常数项了,有的逻辑实现复杂,有的逻辑实现简单

具体测试就是直接用大样本测试,看看实际运行时间
不要自己分析,分析这个要求的功力太高
比如加减运算肯定要比乘除效率高
比如位运算肯定比加减运算效率高(与、或、异或、左移、右移)

常见的时间复杂度

排名从好到差:
O(1)
O(logN)
O(N)
O(N*logN)
O(N^2) O(N^3) … O(N^K)
O(2^N) O(3^N) … O(K^N)
O(N!)

常数时间操作

如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定时间,那么称这样的操作为常数时间的操作

常见的常数时间的操作&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值