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 取代运行时间中的所有加法常数。
  2. 在修改后的运行次数函数中,只保留最高阶项。
  3. 如果最高阶项存在且不是 1,则去除与这个项相乘的常数。得到的结果就是大 O 阶。

2. big O notation - 大 O 表示法

假设列表包含 n 个元素。简单查找需要检查每个元素,因此需要执行 n 次操作。使用大 O 表示法,这个运行时间为 O(n)。大 O 表示法指的并非以秒为单位的速度。大 O 表示法让你能够比较操作数,它指出了算法运行时间的增速。

大 O 表示法说的是最糟的情形。在最糟情况下,必须查看电话簿中的每个条目,对应的运行时间为 O(n)。这是一个保证,简单查找的运行时间不可能超过 O(n)

  1. O(log⁡2n\log_2^nlog2n​),对数时间,这样的算法包括二分查找。
  2. O(nnn),线性时间,这样的算法包括简单查找。
  3. O(n∗log⁡2nn * \log_2^nn∗log2n​),这样的算法包括快速排序 (一种速度较快的排序算法)。
  4. O(n2n^2n2),这样的算法包括选择排序 (一种速度较慢的排序算法)。
  5. O(n!n!n!),一种非常慢的算法。

2.1 时间复杂度

  1. 算法的速度指的并非时间,而是操作数的增速。
  2. 谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
  3. 算法的运行时间用大 O 表示法表示。
  4. O(log⁡2n\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 表示法相关推荐

  1. 数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)

    大O表示法的背景 作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述.我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在 ...

  2. 大o表示法描述复杂度_时间复杂度,空间复杂度和大O表示法

    大o表示法描述复杂度 This is the first post in my series Data Structures & Algorithms. As a boot camp grad ...

  3. 费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升

    费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升 附前者链接 https://blog.csdn.net/wo541075754/article/details/101554 ...

  4. div搜索框与按钮不在一行_前阿里巴巴运营专家:搜索框的5大运营玩法

    *全文图片来自网络,基于 CC0 协议  作者 |磊叔,前阿里巴巴运营专家"古语有云:搜索做得好,用户跑不了.搜索框是重要的营销增长场景.在互联网产品上,方寸之间的位置之争是各个功能的生存之 ...

  5. 算法图解学习笔记01:二分查找大O表示法

    二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...

  6. a*算法的时间复杂度_算法的时间复杂度:大O表示法

    本文讨论一下算法的时间复杂度问题,用到的素材取自<算法图解>一书,强烈推荐, 如有不妥,请联系我! 二分查找 随便想一个1-100的数字. 你的目标是以最少的次数猜到这个数字.你每次猜测后 ...

  7. 算法概念:大O表示法/小o表示法/Ω/Θ

    如果算法A需要的时间与f(n)成正比,则算法A称为f(n)阶,表示为O(f(n)).函数f(n)称为算法的增率函数(growth-rate function).该表示法使用大写字母O来表示(order ...

  8. 大O表示法初学者指南

    大O表示法初学者指南 原文地址:https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/  计算机科学中,大O表示法被用来描述 ...

  9. 多角度透彻理解渐近表示法(大O表示法)

    多角度透彻理解渐近表示法(大O表示法) 若觉得本文写得还可以,请多多关注本人所作书籍<C++语法详解>电子工业出版社出版,网盘地址: https://pan.baidu.com/s/1dI ...

  10. 一文彻底掌握时间复杂度和大O表示法

    预备知识: 计算机基础知识 高中数学知识 时间复杂度用来干嘛 时间复杂度是衡量算法好坏的一个重要指标,另一个重要指标是空间复杂度. 算法 我们先来了解一下算法,对于一个计算机程序,其算法就是其内部执行 ...

最新文章

  1. Openswan企业实战之ipsec ***加速ERP系统
  2. 3、MySQL查看或显示数据库(SHOW DATABASES语句)
  3. thinkphp json_原创干货 | Thinkphp序列化合总
  4. python统计行号_利用Python进行数据分析(第三篇上)
  5. c语言清空文件内容_C 语言清空输入缓冲区的几个手段
  6. linux 三维数据绘图软件,Linux下开发基于.NET的三维绘图程序
  7. 2018年最新_5小时学会微信小程序视频教程网盘地址
  8. linux中的计划任务
  9. 实验室常用质控规则介绍
  10. UE_材质_HDR贴图的UV旋转
  11. Linux系统使用Tomcat部署项目图片验证码不显示问题
  12. 【随文杂想】超长图PS 切片为打印机 A4纸大小打印
  13. linux下ptp性能测试
  14. Vimium 是做什么的?不得不服
  15. 贴片电阻阻值识别方法
  16. 计算机应用能力考试ppt,全国专业技术人员计算机应用能力考试 PPT 2003 题库版...
  17. 专升本管理学知识点总结——目标管理
  18. scp命令传输文件,显示的ETA符号是什么意思
  19. NFA转DFA与DFA简化
  20. 新媒体运营人怎么做粉丝运营

热门文章

  1. MacBook如何安装双系统?
  2. 轻仓的贵金属白银今日走势分析
  3. 线性充电IC和开关充电IC的区别
  4. HM-A300小程序安卓打印异常
  5. ORA-39194: Table mode jobs require the tables to be comma separated.
  6. 使用pthread后,界面假死现象问题
  7. 最全面的应届毕业生落户上海指南(2021)
  8. 应届毕业生怎么找java工作,应届毕业生怎么能找到高薪工作?
  9. Apeaksoft iOS Toolkit for Mac(iOS设备数据恢复软件)
  10. 云从科技在科创板IPO注册获批,收入远高于格灵深瞳同期