c++算法之时间复杂度和空间复杂度

目录

时间复杂度

空间复杂度

分析技巧


时间复杂度

1.时间复杂度是衡量算法执行时间随输入规模增长的增长率

2.通过分析算法中基本操作的执行次数来确定时间复杂度

3.常见的时间复杂度包括:常数时间O(1)、线性时间O(n)、对数时间O(logn)、平方时间O(n^2)等

4.在计算的时候我们关注的是复杂度的数量级,并不严格要求表达式

一般我们关注的是最坏时间复杂度,用O(f(n))表示,大多数时候我们仅需估算即可。

一般来说,评测机1秒大约可以跑2e8次运算,我们要尽可能地让我们的程序运算规模等级控制在1e8以内。

空间复杂度

1.空间复杂度是衡量算法执行过程中所需的存储空间随输入规模增长的增长率

2.通过分析算法中所使用的额外存储空间的大小来确定空间复杂度

3.常见的空间复杂度包括:常数空间O(1)、线性空间O(n)、对数空间O(logn)、平方空间O(n^2)

一般我们关注的是最坏空间复杂度,用O(f(n))表示,大多数时候程序占用的空间一般可以根据开的数组大小精确算出,但也存在需要估算的情况。题目一般不会卡空间,一般是卡时间。举个例子,如题目限制128MB,1int-32bit-4Bytes,128MB-32*2^20int-3e7int

分析技巧

1.理解基本操作:基本操作可以是算数运算(加法、乘法、位运算等)、比较操作、赋值操作等。

2.关注循环结构:循环是算法中常见的结构,它的执行次数对于时间复杂度的分析至关重要。

3.递归算法:递归算法的时间和空间复杂度分析相对复杂。需要确定递归的深度以及每个递归调用的时间和空间开销。

4.最坏情况分析:对于时间复杂度的分析,通常考虑最坏情况下的执行时间。要考虑输入数据 使得算法执行时间达到最大值的情况。

5.善用结论:某些常用算法的时间和空间复杂度已经被广泛研究和证明。可以利用这些已知结果来分析算法的复杂度。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是祁同伟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值