big O notation - 大 O 表示法
big O notation - 大 O 表示法
Big O notation (with a capital letter O, not a zero), also called Landau’s symbol.
大 O 表示法 (大写字母 O,不为零),也称为 Landau’s symbol。
Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity.
大 O 表示法是一种数学表示法,用于描述参数趋于特定值或无穷大时函数的限制行为。
大 O 符号 (big O notation),又称为渐进符号,用于描述函数渐近行为的数学符号。它是用另一个 (通常更简单的) 函数来描述一个函数数量级的渐近上界
。在数学中,它一般用来刻画被截断的无穷级数尤其是渐近级数的剩余项。
代表 order of … (… 阶) 的大 O,最初是一个大写希腊字母 Ο (omicron),现今用的是大写拉丁字母 O。
1. 无穷大渐近
对于 T(n)=4n2−2n+2T(n) = 4n^{2} - 2n + 2T(n)=4n2−2n+2,当 nnn 增大时,n2n^{2}n2 项将开始占主导地位,而其他各项可以被忽略。当 n=500n = 500n=500,4n24n^{2}4n2 项是 2n2n2n 项的 1000 倍大,因此在大多数场合下,省略后者对表达式的值的影响将是可以忽略不计的。
如果我们与任一其他级的表达式比较,n2n^{2}n2 项的系数也是无关紧要的。一个包含 n3n^{3}n3 或 n2n^{2}n2 项的表达式,即使 T(n)=1,000,000⋅n2T(n) = 1,000,000 \cdot n^{2}T(n)=1,000,000⋅n2,假定 U(n)=n3U(n) = n^{3}U(n)=n3,一旦 nnn 增长到大于 1,000,000
,后者就会一直超越前者 (T(1,000,000)=1,000,0003=U(1,000,000)T(1,000,000) = 1,000,000^{3} = U(1,000,000)T(1,000,000)=1,000,0003=U(1,000,000))。
针对第一个例子 T(n)=4n2−2n+2T(n) = 4n^{2} - 2n + 2T(n)=4n2−2n+2,大 O 符号就记下剩余的部分,写作:
T(n)∈O(n2)T(n)\in \mathrm {O} (n^{2})T(n)∈O(n2)
或
T(n)=O(n2)T(n)=\mathrm {O} (n^{2})T(n)=O(n2)
并且我们说该算法具有 n2n^{2}n2 阶 (平方阶) 的时间复杂度。
推导大 O 阶:
- 用常数 1 取代运行时间中的所有加法常数。
- 在修改后的运行次数函数中,只保留最高阶项。
- 如果最高阶项存在且不是 1,则去除与这个项相乘的常数。得到的结果就是大 O 阶。
2. big O notation - 大 O 表示法
假设列表包含 n
个元素。简单查找需要检查每个元素,因此需要执行 n
次操作。使用大 O 表示法,这个运行时间为 O(n)
。大 O 表示法指的并非以秒为单位的速度。大 O 表示法让你能够比较操作数,它指出了算法运行时间的增速。
大 O 表示法说的是最糟的情形。在最糟情况下,必须查看电话簿中的每个条目,对应的运行时间为 O(n)
。这是一个保证,简单查找的运行时间不可能超过 O(n)
。
- O(log2n\log_2^nlog2n),对数时间,这样的算法包括二分查找。
- O(nnn),线性时间,这样的算法包括简单查找。
- O(n∗log2nn * \log_2^nn∗log2n),这样的算法包括快速排序 (一种速度较快的排序算法)。
- O(n2n^2n2),这样的算法包括选择排序 (一种速度较慢的排序算法)。
- O(n!n!n!),一种非常慢的算法。
2.1 时间复杂度
- 算法的速度指的并非时间,而是操作数的增速。
- 谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
- 算法的运行时间用大 O 表示法表示。
- O(log2n\log_2^nlog2n) 比 O(nnn) 快,当需要搜索的元素越多时,前者比后者快得越多
References
http://web.mit.edu/16.070/www/lecture/big_o.pdf
https://www.freecodecamp.org/news/the-top-data-structures-you-should-know-for-your-next-coding-interview-36af0831f5e3/
https://data-structure-and-algorithm.gitbook.io/project/
大话数据结构 - 程杰
https://en.wikipedia.org/wiki/Big_O_notation
big O notation - 大 O 表示法相关推荐
- 数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)
大O表示法的背景 作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述.我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在 ...
- 大o表示法描述复杂度_时间复杂度,空间复杂度和大O表示法
大o表示法描述复杂度 This is the first post in my series Data Structures & Algorithms. As a boot camp grad ...
- 费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升
费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升 附前者链接 https://blog.csdn.net/wo541075754/article/details/101554 ...
- div搜索框与按钮不在一行_前阿里巴巴运营专家:搜索框的5大运营玩法
*全文图片来自网络,基于 CC0 协议 作者 |磊叔,前阿里巴巴运营专家"古语有云:搜索做得好,用户跑不了.搜索框是重要的营销增长场景.在互联网产品上,方寸之间的位置之争是各个功能的生存之 ...
- 算法图解学习笔记01:二分查找大O表示法
二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...
- a*算法的时间复杂度_算法的时间复杂度:大O表示法
本文讨论一下算法的时间复杂度问题,用到的素材取自<算法图解>一书,强烈推荐, 如有不妥,请联系我! 二分查找 随便想一个1-100的数字. 你的目标是以最少的次数猜到这个数字.你每次猜测后 ...
- 算法概念:大O表示法/小o表示法/Ω/Θ
如果算法A需要的时间与f(n)成正比,则算法A称为f(n)阶,表示为O(f(n)).函数f(n)称为算法的增率函数(growth-rate function).该表示法使用大写字母O来表示(order ...
- 大O表示法初学者指南
大O表示法初学者指南 原文地址:https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/ 计算机科学中,大O表示法被用来描述 ...
- 多角度透彻理解渐近表示法(大O表示法)
多角度透彻理解渐近表示法(大O表示法) 若觉得本文写得还可以,请多多关注本人所作书籍<C++语法详解>电子工业出版社出版,网盘地址: https://pan.baidu.com/s/1dI ...
- 一文彻底掌握时间复杂度和大O表示法
预备知识: 计算机基础知识 高中数学知识 时间复杂度用来干嘛 时间复杂度是衡量算法好坏的一个重要指标,另一个重要指标是空间复杂度. 算法 我们先来了解一下算法,对于一个计算机程序,其算法就是其内部执行 ...
最新文章
- Openswan企业实战之ipsec ***加速ERP系统
- 3、MySQL查看或显示数据库(SHOW DATABASES语句)
- thinkphp json_原创干货 | Thinkphp序列化合总
- python统计行号_利用Python进行数据分析(第三篇上)
- c语言清空文件内容_C 语言清空输入缓冲区的几个手段
- linux 三维数据绘图软件,Linux下开发基于.NET的三维绘图程序
- 2018年最新_5小时学会微信小程序视频教程网盘地址
- linux中的计划任务
- 实验室常用质控规则介绍
- UE_材质_HDR贴图的UV旋转
- Linux系统使用Tomcat部署项目图片验证码不显示问题
- 【随文杂想】超长图PS 切片为打印机 A4纸大小打印
- linux下ptp性能测试
- Vimium 是做什么的?不得不服
- 贴片电阻阻值识别方法
- 计算机应用能力考试ppt,全国专业技术人员计算机应用能力考试 PPT 2003 题库版...
- 专升本管理学知识点总结——目标管理
- scp命令传输文件,显示的ETA符号是什么意思
- NFA转DFA与DFA简化
- 新媒体运营人怎么做粉丝运营
热门文章
- MacBook如何安装双系统?
- 轻仓的贵金属白银今日走势分析
- 线性充电IC和开关充电IC的区别
- HM-A300小程序安卓打印异常
- ORA-39194: Table mode jobs require the tables to be comma separated.
- 使用pthread后,界面假死现象问题
- 最全面的应届毕业生落户上海指南(2021)
- 应届毕业生怎么找java工作,应届毕业生怎么能找到高薪工作?
- Apeaksoft iOS Toolkit for Mac(iOS设备数据恢复软件)
- 云从科技在科创板IPO注册获批,收入远高于格灵深瞳同期