为了使时间复杂度评价方法在不同量级情况下,评价更为全面、更精确,于是又可分为以下四种评价方法:

(一)最好情况时间复杂度:

即一个程序在最好情况下的时间复杂度,比如,找一个数组中的元素,第一次就找到元素的情况。

(二)最坏情况时间复杂度

即一个程序在最坏情况下的时间复杂度,比如,找一个数组中的元素,最后一次就找到元素的情况。

(三)平均情况时间复杂度

平均情况时间复杂度=(累加每个元素的时间复杂度+没有该元素的复杂度)/所有元素个数。

如果再引入概率论的评价方法的话,即找到与未找到的概率个0.5,再将能够找到元素的概率平均分给每个元素,最后=(累加每个元素的时间复杂度*概率+未找到*1/2)/元素个数。

(四)均摊情况时间复杂度

引入均摊分析方法——摊还分析法(也称“平摊分析法”),就比如,若每执行n-1次的复杂度为Q(1),执行第n次的复杂度为O(n)。例如:对一个数组进行插值,若数组满了就清空再插值的操作。

这种情况下,将第n次的O(n)摊还给前(n-1)次,那么每个元素的复杂度就为O(1)了。这是一种特殊的平均情况时间复杂度分析,使用场景较为特殊,一般也就适用于大多数情况下时间复杂度较低,只有个别时间复杂度较高的情况。

转载于:https://www.cnblogs.com/somedayLi/p/9729131.html

算法笔记(二)——浅析最好、最坏、平均、均摊时间分析方法相关推荐

  1. 漫画算法笔记 二叉堆基本操作

    漫画算法笔记 二叉堆基本操作 #include <iostream> #include <stdlib.h> #include <vector> using nam ...

  2. 最好、最坏、平均、均摊时间复杂度分析

    1.最好.最坏.平均情况时间复杂度 有时候我们分析一段代码的时间复杂度时,并不能很直观的就得出结果,需要结合具体的场合来判断它的平均情况.下面来看一个栗子: /*** 找出给定数组中给定元素的位置,如 ...

  3. 算法复杂度((平均,最好,最坏,均摊)时间复杂度,空间复杂度)

    文章目录 前言 时间&空间复杂度 时间复杂度 1.最好情况时间复杂度(best case time complexity) 2.最坏情况时间复杂度(worst case time comple ...

  4. [读书笔记]《番茄工作法图解:简单易行的时间管理方法》

    买这本书根本就是个错误的决定, 除非, 我把它付诸实践, 并改善我的生活. 个人觉得<番茄工作法图解:简单易行的时间管理方法>不是时间管理的书,而是一本关于加强注意力和执行力的书. 这一篇 ...

  5. 2015.03.10,学习,文献笔记-“水轮机压力脉动的混频幅值置信度分析方法研究” (1)...

    文献:胡江艺.水轮机压力脉动的混频幅值置信度分析方法研究.水利机械技术,2014(3).17-22 摘要:文章根据IEC试验规程要求,对常见的用于计算压力脉动混频幅值置信度方法进行了分析.结合模型试验 ...

  6. 【2019牛客暑期多校训练营(第二场)- F】Partition problem(dfs,均摊时间优化)

    题干: 链接:https://ac.nowcoder.com/acm/contest/882/F 来源:牛客网 Given 2N people, you need to assign each of ...

  7. 前景检测算法(二)--codebook和平均背景法

     原文:http://www.cnblogs.com/tornadomeet/archive/2012/04/08/2438158.html 前景检测算法_1(codebook和平均背景法) 前景 ...

  8. 数据结构与算法笔记(二) 线性表(数组描述)

    c++常用的数据描述方法是数组描述和链式描述,线性表可以用来说明这两方法,先介绍数组描述的线性表.后面再介绍链式描述的线性表. C++ STL容器vector和list相当于线性表的数组描述和链式描述 ...

  9. RocketMQ学习笔记二之【DefaultMQPushConsumer使用与流程原理分析】

    版本: <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-c ...

最新文章

  1. Fast-SCNN的解释以及使用Tensorflow 2.0的实现
  2. mybatis-mapper
  3. RabbitMQ(七):RabbitMQ 消费端限流、TTL、死信队列是什么?
  4. 手机如何升级为鸿蒙系统,华为手机如何升级鸿蒙系统
  5. Java动态代理详解(Proxy+InvocationHandler)
  6. windows 禁用ipv6服务_在 Windows 7 中禁用IPv6协议/IPv6隧道
  7. 为系统扩展而采取的一些措施——异步
  8. 基于mycat高可用方案——数据库负载
  9. oracle 10g的闪回删除与回收站
  10. six.move 的作用
  11. H3C Private VLAN(私有vlan) 实验
  12. 图像预处理流程与方法
  13. SDRAM中的DQM
  14. java中报出异常java.net.MalformedURLException: unknown protocol: jrt
  15. 基于机智云的智能花盆2.0
  16. 面包板入门电子制作 学习笔记6
  17. VISIO取消箭头自动吸附及粘连
  18. 从户外露营到登陆火星,火星玩家电核装备让太空黑科技成为现实
  19. 什么是链表php概念,链表 · PHP知识大纲 · 看云
  20. 计算机国际会议开幕词,国际会议英文开幕词

热门文章

  1. winfrom 如何让弹窗不影响主界面_「Win」电脑开机后不给我弹几个广告,我还不太习惯...
  2. python能开发android吗_python可以开发安卓吗
  3. oracle进入rman报错,Oracle学习系列之Rman学习(三)
  4. web前端开发:JavaScript 基本语法,
  5. 6 大技巧帮助初学者快速掌握 JavaScript!
  6. 二维数组初始化为0的方式
  7. python的pip换源_[Python]Pip换源以及设置代理
  8. 最好用的营养计算机软件,营养计算器(标准版)
  9. 移动端 html5领奖页面,HTML5移动端交互
  10. 关于php的ifelse说法,PHP,否则elseif