算法分析-时间复杂度:大O、大Ω、大θ、小o、小ω
一、概述
Ο,读音:big-oh;表示上界,小于等于。
Ω,读音:big omega、欧米伽;表示下界,大于等于。
Θ,读音:theta、西塔;既是上界也是下界,称为确界,等于。
ο,读音:small-oh;表示上界,小于。
ω,读音:small omega;表示下界,大于。
Ο是渐进上界,Ω是渐进下界。Θ需同时满足大Ο和Ω,故称为确界。Ο极其有用,因为它表示了最差性能。
二、对常见的Ο和Ω进行分析
2.1 大O表示法
大O是我们在分析算法复杂度时最常用的一种表示法。
f(x) = O(g(x)) 表示的含义是f(x)以g(x)为上界
当函数的大小只有上界,没有明确下界的时候,则可以使用大O表示法,该渐进描述符一般用于描述算法的 最坏复杂度。
f(x) = O(g(x))正式的数学定义:存在正常数c、n、n0,当 n>n0 的时,任意的 f(n) 符合 0 <= f(n) <= c.g(n)。如下图所示
我们在分析各种排序算法时,一般都使用大O来表现算法的性能。当然,我们这里以一个很简单的嵌套循环为例,在分析这种简单算法的复杂度时,我们通常计算其中 关键步骤的执行次数 作为此算法的时间复杂度。
for (int i = 0; i < n; i++) {for (int j = i; j < n; j++) {... // 关键步骤}}
该算法外层执行了 n 次循环,如果内层也是 n 次循环,我们便可知道该算法时间复杂度为 n^2,但是该算法内层执行的循环次数会随着外层循环的进行依次减少,最大为n。所以,我们便可以确定该算法的时间复杂度有一个上界 n^2,即T(n) = O(n^2)
根据之前的介绍:即双重for循环的最差执行次数为 n^2,也就是O(n^2)。
常见的时间复杂度如图所示:
所耗时间从小到大依次是:
我们可以画一个函数图像清晰的看每个复杂度的时间对比:
2.2 大Ω表示法
大Ω是我们在分析算法复杂度时另外最常用的一种表示法。
f(x) = Ω(g(x)) 表示的含义是f(x)以g(x)为下界
当函数的大小只有下界,没有明确的上界的时候,可以使用大Ω表示法,该渐进描述符一般用与描述算法的 最优复杂度 。
f(n)= Ω(g(n)) 正式的数学定义:存在正常数c、n、n0,当 n > n0 的时,任意的 f(n) 符合 0 <= c.g(n) <= f(n)。如下图所示
从定义中,我们可以看到,大Ω是有一个下确界的,即最小是多少。
Note: 在online算法的竞争性分析中,如果算法A的性能是Ω(k),算法B的性能是Ω(k^2),由于我们要求竞争ratio越小越好,则Ω(k)优于Ω(k^2)。
————————————————
原文链接:https://blog.csdn.net/anshuai_aw1/article/details/108449000
算法分析-时间复杂度:大O、大Ω、大θ、小o、小ω相关推荐
- 算法时间复杂度分析——大O、大Ω、大θ、小o,小ω
最近开始转战传统算法分析的研究工作了,重新拾起以前学过的一些内容. 目录 一.概述 二.对常见的Ο和Ω进行分析 2.1 大O表示法 2.2 大Ω表示法 三.P问题,NP问题,NP-hard问题,NPC ...
- 算法分析之常用符号大O、小o、大Ω符号、大Θ符号、w符号
大O符号(英语:Big O notation),又称为渐进符号,是用于描述函数渐近行为的数学符号.更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界.在数学中,它一般用来刻画被 ...
- 算法分析:大O符号/大Ω符号/大Θ符号/小o符号/小w符号
感谢作者分享,原文链接:http://blog.csdn.net/u012816041/article/details/49888631 大O,渐进表示法,接下来我尝试用最简单的方式进行说明. 学习算 ...
- 算法分析—大O、大Ω、大θ
前言 在算法的学习中,最开始便是要学习算法的分析.学习算法分析时,我们便会接触到这么几个符号:大O.大Ω.大θ,常常让人难以理解. 在通常的算法分析时,我们可以明白,在输入规模较小,各种算法之间的时间 ...
- 时间复杂度以及空间复杂度(大O的渐进表示法)
目录 1.算法效率 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 3.空间复杂度 1.算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率. 时间效率被称为时间复杂 ...
- 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
SQL优化中,有一条放之四海而皆准的既定方针,那就是:永远以小数据驱动大数据.其本质其实就是以小的数据样本作为驱动查询能够优化查询效率,在SQL中,涉及到不同表数据的连接.转移.或者合并,这些操作必须 ...
- 加快windows上对大文件,以及很多很多小文件进行不同磁盘拷贝的速度——windows上的最快拷贝软件FastCopy
欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 加快windows上对大文件,以及很多很多小文件进行不同磁盘拷贝的速度--windows上的最快拷贝软件FastCopy ...
- kettle将多个文件压缩_如何使用WinRAR将一个大文件压缩成多个小的压缩包
目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 / 在现实生活中,受文件大小的限制,在传输的过程往往出现困难,如:邮 ...
- hihoCoder 1114 小Hi小Ho的惊天大作战:扫雷·一 最详细的解题报告
题目来源:小Hi小Ho的惊天大作战:扫雷·一 解题思路:因为只要确定了第一个是否有地雷就可以推算出后面是否有地雷(要么为0,要么为1,如果不是这两个值就说明这个方案行不通),如果两种可能中有一种成功, ...
最新文章
- windows 网络规划
- 噪声强度(噪声功率) 噪声方差到底有什么关系?
- ITK:将两个图像与棋盘格图案组合在一起
- 【转】Windows版本,OS内核版本,Windows SDK之间的关系
- java 对比工具_Java几款性能分析工具的对比
- 环形博弈 HDU - 3951
- XML解析模型(完整版)
- Origin2018安装与使用(整理中)
- 如何编写一个好的软件设计文档——Medium中文站
- twaver html5软件价格,TWaver数据中心可视化软件
- 单片机中断原理及定时器详解
- 斯坦福大学公开课:量子力学_TimelineMax:了解力学
- python翻页爬取豆瓣影评,翻页爬取豆瓣电影名称和评分
- 作用域链与原型链的区别
- WMS仓储管理系统在各种行业中,都有哪些作用
- Win7安全模式卡在ClassPNP.sys位置解决办法
- @Spring事务管理
- struts2-spring-hibernate实现员工的增删查功能
- 关于“ROS2 Topic-Statistics-Tutorial编译出错”的思考2
- slam学习(1)——卡尔曼滤波