数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界
目录
2.1.概述
2.2.时间复杂度的计算
2.2.1.渐进复杂度
2.2.2.渐进上界
2.2.3.渐进下届
2.2.4.复杂度排序
2.2.5.举几个例子
2.1.概述
算法的基本定义:
求解问题的一系列计算或者操作。
衡量算法性能的指标:
- 时间复杂性
- 空间复杂性
这两个指标里最有用的是时间复杂度,平时谈的算法复杂度一般指的就是时间复杂度。
空间复杂性:
算法执行所用的空间。
时间复杂性:
用time的缩写T表示算法执行所需要的时间,这里的时间指的不是传统意义上时分秒的时间,而是将一步操作抽象成一个单位时间,所以算法的时间复杂度里的时间可以理解为所要执行的步骤的数量,即操作次数。
时间复杂性分为,最好时间复杂性、最坏时间复杂性、平均时间复杂性。这里面最有用的指标是最坏时间复杂性,它标识了一个算法执行的最差效率,要是它是能接受的,那么这个算法的执行效率就不用担心了。
2.2.时间复杂度的计算
2.2.1.渐进复杂度
时间复杂度是随输入规模变化而变化的一个值,这种关系不难看出是一个函数关系,所以时间复杂度的计算其实就是推导出当前算法和输入规模之间的这个关系函数。这个关系函数可以是根据算法的具体步骤一步步相加最后推到出来的详细的一个函数表达式,但是其实我们知道时间复杂度函数一定是一个自变量为输入规模n的单调递增的一元函数。这种单调递增函数当自变量趋近于无穷大(即+∞)时,函数表达式里的常数项和阶数不是最高的项对变化来说是可以忽略不记的,所以我们用渐进复杂度就可以表示当输入规模趋于无穷大时候的时间复杂度。
渐进复杂性是算法复杂度的一种简化表示,即算法的复杂度可以表示为当输入规模趋于+∞时,变化最快的部分。假设T(n)是算法的时间复杂度函数,t(n)是算法的渐进复杂度,可以得到以下等式:
以上等式之所以成立不难推出,因为t(n)是T(n)中变化最快的部分,T(n)减去变化快的部分与T(n)的比值必然是随着n趋近于∞的时候,趋近于0的。
2.2.2.渐进上界
渐进上界,即当前算法在输入规模趋近于+∞时,时间复杂度不会超过的一个函数值。用大O表示,这种表示是抽象的、简介的、只保留重点因素的,一般我们说算法复杂度说的就是大O表示的渐进时间复杂度的上界。
渐进上界的定义:
设f和g是定义为自然数集N上的函数,若存在正数c和n0,使得对一切n≥n0有:
0≤f(n)≤cg(n)
成立,则称f(n)的渐进上界是g(n),记作:
f(n)=O(g(n))
2.2.3.渐进下届
下界,即当前算法在输入规模趋近于+∞时,前算法运行时间的下限,采用大Ω符号来表示。
渐进上界的定义:
设f和g是定义为自然数集N上的函数,若存在正数c和n0,使得对一切n≥n0有:
0≤cg(n)≤f(n)
成立,则称f(n)的渐进下界是Ω(n),记作:
f(n)=Ω(g(n))
2.2.4.复杂度排序
算法的时间复杂度最后表示出来一定是一个自变量为输入规模n的一元函数,这个一元函数还一定是个基本初等函数,基本初等函数无非就六种,所谓的复杂度排序其实也就是六种基本初等函数在自变量趋近于无穷大时的变化率:
常数级、对数级、线性级、多项式级是能接受的范围,
指数级、阶乘级是灾难性的。
2.2.5.举几个例子
O(N)的时间复杂度:
for(i=1; i<=n; ++i)
{j = i;j++;
}
O(logN)的时间复杂度:
int i = 1;
while(i<n)
{i = i * 2;
}
O(n²) 的时间复杂度:
for(x=1; i<=n; x++)
{for(i=1; i<=n; i++){j = i;j++;}
}
数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界相关推荐
- 【数据结构】算法的渐进分析-渐进时间复杂度
算法的渐进分析(asymptotic algorithm analysis)简称算法分析.算法分析直接与它所求解的问题的规模 n 有关,因此,通常将问题规模作为分析的参数,求算法的时间和空间开销与问 ...
- 一层循环时间复杂度_渐进时间复杂度分析
公众号:原与译 直接看题: 给定一个自然数 n,然后求出前 n 个自然数的和 sum.( n > 0 ) 如: n = 3,则 sum = 1 + 2 + 3 = 6 n = 5,则 sum = ...
- 时间复杂度T(n)和渐进时间复杂度O(n)是什么,该如何计算?
提示:本文属于基础篇,内容过多,如果对此已有了解,可以直接阅读加粗文字 算法的效率 = 运行的时间 + 所需的存储空间 ,我们暂时不考虑存储空间,如何度量运行时间是本文讨论的内容,我们首先要考虑到影响 ...
- 数据结构与算法之时间复杂度详解
数据结构与算法之时间复杂度详解 目录 排序算法的介绍和分类 算法的时间复杂度概念 常见的时间复杂度解析 平均时间复杂度和最坏时间复杂度 空间复杂度介绍 1. 排序算法的介绍和分类 排序算法的介绍 排序 ...
- 【马里奥数据结构吃“金币”】时间复杂度和空间复杂度
作者:一个喜欢猫咪的的程序员 专栏:<数据结构> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽. --<人民日报&g ...
- 数据结构和算法———P3 时间复杂度和空间复杂度
算法效率的度量方法 算法时间复杂度的定义: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间度 ...
- 【数据结构】算法的时间复杂度和空间复杂度解析
目录 1. 算法的效率 2 时间复杂度 2.1 时间复杂度的概念 2.2 大O渐进表示法 2.3 常见算法的时间复杂度分析 3. 空间复杂度 3.1 常见空间复杂度分析 1. 算法的效率 我们在写一个 ...
- 数据结构: 算法的时间复杂度和空间复杂度
1.算法的概念: 算法 (Algorithm),是对特定问题求解步骤的一种描述. 解决一个问题往往有不止一种方法,算法也是如此.那么解决特定问题的多个算法之间如何衡量它们的优劣呢?有如下的指标: 2. ...
- 数据结构学习笔记:时间复杂度
数据结构学习笔记:时间复杂度 1.大O函数 O -- Order of Magnitude -- 同阶 2.常用大O函数 3.常用大O函数图像 4.案例演示
最新文章
- VConsole的使用
- [转载]基于数据挖掘技术入侵检测系统研究
- 计算机组装报告文档,计算机组装报告.doc.docx
- Oracle复杂查询
- 收藏网站制作常用经典css.div.布局.设计实例打包下载
- oracle rman 实例,Oracle数据库rman常用命令的使用示例
- PHP:打造一个无限极评论模块
- bzoj 1052: [HAOI2007]覆盖问题(二分+贪心)
- 散粉在哪个步骤用_新手化妆步骤+50个美妆小技巧+化妆知识扫盲
- UE4锁定Camera画面
- cad相对坐标快捷键_CAD常用的快捷键
- win7网络发现启用后找不到网络计算机,网络发现启用不了|无法启用网络发现的解决方法...
- python绘制四叶草_python绘图四叶草
- 名帖32 东汉 隶书《韩仁铭碑》
- 构建/dev/kmem枚举所有Linux内核模块(包括隐藏的)
- 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计
- 互联网的金门大桥:Cisco
- 重磅资讯:《数据安全法》颁布,国家支持数据开发利用和数据安全技术研究
- 规则引擎代码可视化编辑全梳理
- qq空间、微信好友、邮件、短信分享