【复杂度分析:最好、最坏、平均、均摊时间复杂度】

此为自己学习课程的笔记,供自己复习用。


前言

为了表示代码在不同情况下的不同时间复杂度,那么需要如下三个概念:

  • 最好情况时间复杂度
  • 最坏情况时间复杂度
  • 平均情况时间复杂度

一、最好、最坏情况时间复杂度

  • 最好情况时间复杂度:在最理想的情况下,执行这段代码的时间复杂度
  • 最坏情况时间复杂度:在最糟糕的情况下,执行这段代码的时间复杂度

二、平均情况时间复杂度

由于最好、最坏情况时间复杂度都是在比较极端的情况下的代码复杂度,为了表示平均情况下的时间复杂度,就需要用到平均时间复杂度
计算方法:每种情况下的复杂度✖️每种情况发生的概率,然后再把它们加和。(即为求期望值


一般情况下,我们使用一个复杂度就可以满足需求了。
只有同一块代码在不同的情况下,时间复杂度有量级的差距,我们才会使用上面这三种复杂度表示法来区分

三、均摊时间复杂度

平均复杂度只在某些特殊情况下才会用到,
均摊时间复杂度应用的场景比它更加特殊、更加有限

当一段代码中,不同情况的时间复杂度出现的频率是有规律的,而且有一定的前后时序关系时,可以通过均摊的方法,将时间复杂度较高的情况均摊到时间复杂度较低的情况,此时就得到了均摊时间复杂度

摊还分析(又叫平摊分析):对于一个数据结构进行一组连续的操作中,大部分情况下时间复杂度都比较低,只有少数情况下时间复杂度比较高,而且这些操作之间存在前后连贯的时序关系。这时,可以将这组操作放在一起分析,看看能否将较高时间复杂度那次操作的耗时,平摊到其他那些时间复杂度比较低的操作上。

在能够应用均摊时间复杂度分析的场合,一般均摊时间复杂度就等于最好情况时间复杂度。


总结

引入这几个复杂度概念,是因为在同一段代码,在不同输入的情况下,复杂度量级有可能是不一样的。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值