big O notation - 大 O 表示法

article/2025/8/22 11:10:41

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 ) = 4 n 2 − 2 n + 2 T(n) = 4n^{2} - 2n + 2 T(n)=4n22n+2,当 n n n 增大时, n 2 n^{2} n2 项将开始占主导地位,而其他各项可以被忽略。当 n = 500 n = 500 n=500 4 n 2 4n^{2} 4n2 项是 2 n 2n 2n 项的 1000 倍大,因此在大多数场合下,省略后者对表达式的值的影响将是可以忽略不计的。

如果我们与任一其他级的表达式比较, n 2 n^{2} n2 项的系数也是无关紧要的。一个包含 n 3 n^{3} n3 n 2 n^{2} n2 项的表达式,即使 T ( n ) = 1 , 000 , 000 ⋅ n 2 T(n) = 1,000,000 \cdot n^{2} T(n)=1,000,000n2,假定 U ( n ) = n 3 U(n) = n^{3} U(n)=n3,一旦 n n n 增长到大于 1,000,000,后者就会一直超越前者 ( T ( 1 , 000 , 000 ) = 1 , 000 , 00 0 3 = 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 ) = 4 n 2 − 2 n + 2 T(n) = 4n^{2} - 2n + 2 T(n)=4n22n+2,大 O 符号就记下剩余的部分,写作:
T ( n ) ∈ O ( n 2 ) T(n)\in \mathrm {O} (n^{2}) T(n)O(n2)

T ( n ) = O ( n 2 ) T(n)=\mathrm {O} (n^{2}) T(n)=O(n2)
并且我们说该算法具有 n 2 n^{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 ⁡ 2 n \log_2^n log2n),对数时间,这样的算法包括二分查找。
  2. O( n n n),线性时间,这样的算法包括简单查找。
  3. O( n ∗ log ⁡ 2 n n * \log_2^n nlog2n),这样的算法包括快速排序 (一种速度较快的排序算法)。
  4. O( n 2 n^2 n2),这样的算法包括选择排序 (一种速度较慢的排序算法)。
  5. O( n ! n! n!),一种非常慢的算法。

2.1 时间复杂度

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 算法的速度指的并非时间,而是操作数的增速。
  2. 谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
  3. 算法的运行时间用大 O 表示法表示。
  4. O( log ⁡ 2 n \log_2^n log2n) 比 O( n n n) 快,当需要搜索的元素越多时,前者比后者快得越多

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


http://chatgpt.dhexx.cn/article/3BpP0HKx.shtml

相关文章

算法分析:大O符号/大Ω符号/大Θ符号/小o符号/小w符号

感谢作者分享,原文链接:http://blog.csdn.net/u012816041/article/details/49888631 大O,渐进表示法,接下来我尝试用最简单的方式进行说明。 学习算法我经常听到这个词汇,我一开始很难理解,什么鬼&#xff…

算法分析—大O、大Ω、大θ

前言 在算法的学习中,最开始便是要学习算法的分析。学习算法分析时,我们便会接触到这么几个符号:大O、大Ω、大θ,常常让人难以理解。 在通常的算法分析时,我们可以明白,在输入规模较小,各种算…

算法分析——大O标记法

目录 一. 运行时间 二. 大O 表示法 2.1 示例 三. 总结 五. 扩展 一. 运行时间 每次介绍算法时,我们都将讨论其运行时间。一般而言,应选择效率最高的算法,以最大限度地减少运行时间或占用空间。 可是,如果代码都还没有运行&a…

Oracle数据库查询语句

1 oracle数据库查询表的所有数据–select * from 表名;(* 代表所有) 2 oracle数据库查询表中指定字段的值–select 字段名1,字段名2,……from 表名; 3 oracle数据库往表中添加数据信息–(添加信息使用inser…

Access数据库的查询

内容很简单,我搭建access数据库就是为了简单测试access语句的对错,以及学习access数据库的语法。 1.打开access数据库。 2.主页->空数据库 3.创建数据 4.创建->查询设计 5.【显示表】中的【表】【查询】【两者都有】,都可以。点击添加…

数据库查询语句SQL中like、%、-的区别

数据库查询语句SQL中like、%、-的区别 数据库查询语句SQL中like、%、-的区别 %百分号通配符:表示任何字符出现任意次数(可以是0次) SQL 语句选取 name 以字母 "k" 结尾的所有客户: SELECT * FROM Websites WHERE name LIKE %k; 执行输出结果: 下划线通配符:表示…

使用oracle数据库分页查询语句,各种数据库的分页查询语句

各种数据库的分页查询语句 1.oracle数据库分页select * from (select a.*,rownum rc from 表名 where rownum=endrow) a where a.rc=startrow2.DB2数据库分页Select * from (select rownumber() over() as rc,a.* from (select * from 表名 order by 列名) as 各种数据库的分页…

解决数据库查询语句where条件为空查询全部数据,不为空按照条件查询

问题:在用查询语句查询电影类型,电影年代,电影区域的时候,要返回全部的数据,就是where条件为空,返回所有的数据 解决:select * from 表 where (字段条件 or 条件‘’) 代码: const …

数据库内外联接查询语句

建立如下表并插入数据: create table s(sid varchar2(10) primary key,sname varchar2(50),sage number(30));insert into s values(111,小红,20);insert into s values(222,小红,20);insert into s values(333,小红,20);insert into s values(555,小红,20);create…

SQL Server数据库的查询语句

select version; #查询数据库的版本 select servername; #查询服务名 select host_name(); #查询主机名,如果是用navicat远程连接的话,主机名是本地的名字 select db_name(); #查询当前数据库名 select db_name(1); #查询第一个数据库名 select db_name(…

数据库去重语句整理

示例数据 Test表中有id和name两个字段,id各不相同,name有重复。 现在需要去除重复的数据,只保留重复的里面id最大的数据。 一、去重语句一(通用型): SELECT * FROM test c where c.id in( SELECT b.id from test a,test b wher…

数据库查询中的in语句

数据库查询中的in语句 在数据库中也有运算符&#xff0c;比如<、>、、之类的&#xff0c;还有一些or、and之类的&#xff0c;下面我们来学习关于in语句的方法&#xff0c;in在数据库中到底起怎样的作用&#xff1f; 如上图&#xff0c;我通过where语句限制年龄&#xff0…

数据库查询语句(二)-条件查询

文章目录 前言一、单条件查询二、多条件查询 前言 1. 熟练掌握where子句各类运算符的使用 2. 熟练掌握多条件查询and、or的使用 一、单条件查询 在SQL中&#xff0c;insert、update、delete和select后面都能带where子句&#xff0c;用于插入、修改、删除或查询指定条件的记…

数据库查询语句中的排序

1.排序查询语法 排序查询语法&#xff1a; select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]语法说明&#xff1a; 先按照列1进行排序&#xff0c;如果列1的值相同&#xff0c;则按照列2排序&#xff0c;以此类推asc从小到大排序&#xff0c;即升序desc从大到…

C# 数据库查询语句1

C# 数据库查询语句1作者&#xff1a;陈钰桃 撰写时间&#xff1a;2022年3月27日第1节. 查询数据 数据库表是存储数据库中所有数据的对象。 在表中&#xff0c;数据按行和列格式逻辑组织&#xff0c;类似于电子表格(Excel)。在表中&#xff0c;每行代表一个唯一记录&#xff0c;…

数据库基础之查询语句

mysql三范式&#xff1a; 第一范式(确保每列保持原子性)【属性不可分】 第二范式(确保表中的每列都和主键相关)【符合第一范式&#xff0c;同时非主属性完全依赖于主键】 第三范式(确保每列都和主键列直接相关,而不是间接相关)【符合2NF&#xff0c;并且消除传递依赖】 前言 …

数据库的查询语句

目录 一 . 基本查询 1. 查询所有数据 2.查询部分字段 3. 起字段别名 4. 拓展 二 . 条件查询 三 . 模糊查询 四 . 范围查询 五 . 为空查询 六 . 排序 七 . 聚合函数 八 . 分组 九 . 分页查询 练习模板 一 . 基本查询 1. 查询所有数据 select * from goods; 2.查…

深度学习-深度卷积神经网络发展

AlexNet网络 现代意义上的深度卷积神经网络起源于AlexNet网络&#xff0c;它是深度卷积神经网络的鼻祖。这个网络相比之前的卷积网络最显著的特点是层次加深&#xff0c;参数规模变大。网络结构如下图所示&#xff1a; 这个网络有5个卷积层&#xff0c;它们中的一部分后面接着m…

什么是深度卷积神经网络,基于深度卷积神经网络

卷积神经网络算法是什么&#xff1f; 一维构筑、二维构筑、全卷积构筑。 卷积神经网络&#xff08;ConvolutionalNeuralNetworks,CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff08;FeedforwardNeuralNetworks&#xff09;&#xff0c;是深度学习&a…

经典卷积和深度卷积的神经网络

文章目录 LeNet网络AlexNet深度卷积神经网络 (AlexNet)VGGNIN(网络中的概念)含并行连接的网络GoogLeNet / Inception V3批量 归一化一些B站评论区大佬讨论残差网络ResNetResNet为什么能训练一千层暂时浅过一遍,不求每个部分都理解很深度,后面通过复现项目来加深理解。 这里…