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

article/2025/8/24 10:17:19

大O表示法的背景

作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述。我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在查阅各方资料后进行详细地讲解。

大O表示法的定义

根据Big O notation(大O表示法)维基百科的描述:

大O表示法的字母O是函数的增长率,也被称为函数的阶数,即字母O代表Order(阶数)。用大O符号描述函数通常只提供函数增长率的一个上界。
设f是实或复值函数,g是实值函数,它们都定义在实正数的无界子集上,使得g(x)对于所有足够大的x都为正数,那么我们称:当x趋向于无穷大时,f(x)=O(g(x))。
另外,对于所有足够大的x值,f(x)的绝对值最多是g(x)的正常数倍。即f(x) = O(g(x))有且仅有一个实数M和一个实数x0使得:对于所有x≥x0的x,|f(x)|≤Mg·(x)恒成立。

在典型的用法中,O符号是渐近的,也就是说,它指的是非常大的x。因此,可以应用以下简化规则:如果f(x)是几个项的和,如果有一个增长率最大的项,它可以保留,其他项都可以省略。
如果f(x)是几个因子的乘积,任何常数(乘积中不依赖于x的项)都可以省略。
例如,让f(x) = 6x4 - 2x3 + 5,假设我们想要简化这个函数,用大O表示法来描述x趋于无穷时的增长率。这个函数是三项的和:6x4, 2x3和5。在这三项中,增长率最高的是指数最大的x,即6x4。现在我们可以应用第二个规则:6x4是6和x4的乘积,其中第一个因子不依赖于x,省略这个因子就得到了简化形式x4。因此,我们说f(x)是(x4)的Big O。数学上,我们可以写成f(x) = O(x4)可以用形式定义来确认这个计算:令f(x) = 6x4-2x3 + 5, g(x) = x4。应用一个正式定义,f(x) = O(x4)等于它的展开式|f(x)|≤MX4,其中M是一个常数。对于某些合适的x0和M以及所有的x >x0。为了证明这一点,令x0 = 1, M = 13。然后,对于所有的x > x0
在这里插入图片描述
因此,我们说:|6x4-2x3 + 5|≤13x4
而这个表达式用大O表示法,可写成:(6x4-2x3 + 5)=O(x4)

大O表示法与小o表示法的区别

如果你上过高等数学的课程,你一定对小o表示法不陌生,下面是高阶无穷小,也就是小o表示法的定义:

设为an和bn为两个序列的数,而且都是n趋近于无穷时的无穷小量。虽然它们在n趋近于无穷时都趋于零,但趋于零的速度是有区别的。
可以用如下方式比较它们的速度:
若对于任意正实数c>0,存在正整数N,在k>N时,使得ak<c·bk总是成立,则称:当n趋近于无穷时,an=o(bn),即an是bn的高阶无穷小。
在上述定义中,也可以说无穷小量an的阶要比bn的要高,或者说an比bn更快地趋于零,尽管在此时“阶”或者“速度”本身其实都没有明确的定义。

通过上述我对小o表示法的讲解后,我们再看看维基百科中对大O表示法与小o表示法区别的描述:

符号名字描述公式定义
在这里插入图片描述大O表示法f渐近地以g为界在这里插入图片描述
在这里插入图片描述小o表示法f渐近地被g控制公式定义

由这个对比表格,我们可以清楚地知道:
大O表示法f(n)=O(g(n))中的f(n)是g(n)的等阶无穷大或者是同阶无穷大。
小O表示法f(n)=o(g(n))中的f(n)是g(n)的高阶无穷小。


http://chatgpt.dhexx.cn/article/9MVlWtal.shtml

相关文章

算法的时间复杂度(大O表示法)

首先我们先来看个例子, 我想找个1&#xff5e;100的数字&#xff0c;你的目标是以最少的次数猜到这个数字。你每次猜测后&#xff0c;我会说小了、大了或对了。下面我们来看下两种简单的方法&#xff08;方法有很多种&#xff09;&#xff0c;再来引入算法的运行时间&#xff0…

算法时间复杂度分析——大O、大Ω、大θ、小o,小ω

最近开始转战传统算法分析的研究工作了&#xff0c;重新拾起以前学过的一些内容。 目录 一、概述 二、对常见的Ο和Ω进行分析 2.1 大O表示法 2.2 大Ω表示法 三、P问题&#xff0c;NP问题&#xff0c;NP-hard问题&#xff0c;NPC问题 3.1 P问题和NP问题 3.2 NPC问题和N…

复杂度分析(大O表示法)

复杂度分析 前文提要 本文完完全全引用极客时间的文章《数据结构与算法之美》&#xff0c;作者王争。 数据结构是作为程序猿绕不过的一道坎&#xff0c;所以萌生了学习的想法&#xff0c;试读了几篇文章后发现讲的很好&#xff0c;也有很多人订阅&#xff0c;于是不回头的走…

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&#xff0c;不为零)&#xff0c;也称为 Landau’s symbol。 Big O notation is a mathematical notation that describes the l…

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

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

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

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

算法分析——大O标记法

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

Oracle数据库查询语句

1 oracle数据库查询表的所有数据–select * from 表名;&#xff08;* 代表所有&#xff09; 2 oracle数据库查询表中指定字段的值–select 字段名1&#xff0c;字段名2&#xff0c;……from 表名&#xff1b; 3 oracle数据库往表中添加数据信息–&#xff08;添加信息使用inser…

Access数据库的查询

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

数据库查询语句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条件为空查询全部数据,不为空按照条件查询

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

数据库内外联接查询语句

建立如下表并插入数据&#xff1a; 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(); #查询主机名&#xff0c;如果是用navicat远程连接的话&#xff0c;主机名是本地的名字 select db_name(); #查询当前数据库名 select db_name(1); #查询第一个数据库名 select db_name(…

数据库去重语句整理

示例数据 Test表中有id和name两个字段&#xff0c;id各不相同&#xff0c;name有重复。 现在需要去除重复的数据&#xff0c;只保留重复的里面id最大的数据。 一、去重语句一(通用型)&#xff1a; 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;并且消除传递依赖】 前言 …