算法笔记(二)——浅析最好、最坏、平均、均摊时间分析方法
为了使时间复杂度评价方法在不同量级情况下,评价更为全面、更精确,于是又可分为以下四种评价方法:
(一)最好情况时间复杂度:
即一个程序在最好情况下的时间复杂度,比如,找一个数组中的元素,第一次就找到元素的情况。
(二)最坏情况时间复杂度
即一个程序在最坏情况下的时间复杂度,比如,找一个数组中的元素,最后一次就找到元素的情况。
(三)平均情况时间复杂度
平均情况时间复杂度=(累加每个元素的时间复杂度+没有该元素的复杂度)/所有元素个数。
如果再引入概率论的评价方法的话,即找到与未找到的概率个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
算法笔记(二)——浅析最好、最坏、平均、均摊时间分析方法相关推荐
- 漫画算法笔记 二叉堆基本操作
漫画算法笔记 二叉堆基本操作 #include <iostream> #include <stdlib.h> #include <vector> using nam ...
- 最好、最坏、平均、均摊时间复杂度分析
1.最好.最坏.平均情况时间复杂度 有时候我们分析一段代码的时间复杂度时,并不能很直观的就得出结果,需要结合具体的场合来判断它的平均情况.下面来看一个栗子: /*** 找出给定数组中给定元素的位置,如 ...
- 算法复杂度((平均,最好,最坏,均摊)时间复杂度,空间复杂度)
文章目录 前言 时间&空间复杂度 时间复杂度 1.最好情况时间复杂度(best case time complexity) 2.最坏情况时间复杂度(worst case time comple ...
- [读书笔记]《番茄工作法图解:简单易行的时间管理方法》
买这本书根本就是个错误的决定, 除非, 我把它付诸实践, 并改善我的生活. 个人觉得<番茄工作法图解:简单易行的时间管理方法>不是时间管理的书,而是一本关于加强注意力和执行力的书. 这一篇 ...
- 2015.03.10,学习,文献笔记-“水轮机压力脉动的混频幅值置信度分析方法研究” (1)...
文献:胡江艺.水轮机压力脉动的混频幅值置信度分析方法研究.水利机械技术,2014(3).17-22 摘要:文章根据IEC试验规程要求,对常见的用于计算压力脉动混频幅值置信度方法进行了分析.结合模型试验 ...
- 【2019牛客暑期多校训练营(第二场)- F】Partition problem(dfs,均摊时间优化)
题干: 链接:https://ac.nowcoder.com/acm/contest/882/F 来源:牛客网 Given 2N people, you need to assign each of ...
- 前景检测算法(二)--codebook和平均背景法
原文:http://www.cnblogs.com/tornadomeet/archive/2012/04/08/2438158.html 前景检测算法_1(codebook和平均背景法) 前景 ...
- 数据结构与算法笔记(二) 线性表(数组描述)
c++常用的数据描述方法是数组描述和链式描述,线性表可以用来说明这两方法,先介绍数组描述的线性表.后面再介绍链式描述的线性表. C++ STL容器vector和list相当于线性表的数组描述和链式描述 ...
- RocketMQ学习笔记二之【DefaultMQPushConsumer使用与流程原理分析】
版本: <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-c ...
最新文章
- Fast-SCNN的解释以及使用Tensorflow 2.0的实现
- mybatis-mapper
- RabbitMQ(七):RabbitMQ 消费端限流、TTL、死信队列是什么?
- 手机如何升级为鸿蒙系统,华为手机如何升级鸿蒙系统
- Java动态代理详解(Proxy+InvocationHandler)
- windows 禁用ipv6服务_在 Windows 7 中禁用IPv6协议/IPv6隧道
- 为系统扩展而采取的一些措施——异步
- 基于mycat高可用方案——数据库负载
- oracle 10g的闪回删除与回收站
- six.move 的作用
- H3C Private VLAN(私有vlan) 实验
- 图像预处理流程与方法
- SDRAM中的DQM
- java中报出异常java.net.MalformedURLException: unknown protocol: jrt
- 基于机智云的智能花盆2.0
- 面包板入门电子制作 学习笔记6
- VISIO取消箭头自动吸附及粘连
- 从户外露营到登陆火星,火星玩家电核装备让太空黑科技成为现实
- 什么是链表php概念,链表 · PHP知识大纲 · 看云
- 计算机国际会议开幕词,国际会议英文开幕词
热门文章
- winfrom 如何让弹窗不影响主界面_「Win」电脑开机后不给我弹几个广告,我还不太习惯...
- python能开发android吗_python可以开发安卓吗
- oracle进入rman报错,Oracle学习系列之Rman学习(三)
- web前端开发:JavaScript 基本语法,
- 6 大技巧帮助初学者快速掌握 JavaScript!
- 二维数组初始化为0的方式
- python的pip换源_[Python]Pip换源以及设置代理
- 最好用的营养计算机软件,营养计算器(标准版)
- 移动端 html5领奖页面,HTML5移动端交互
- 关于php的ifelse说法,PHP,否则elseif