- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构时间复杂度讲解
一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但是有时候,我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。
一般情况下,算法中基本操作重复执行的次数,是问题规模 n 的某个函数,用T(n)表示。若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度。
时间频度不相同时,渐进时间复杂度O(f(n)) 有可能相同,如T(n)=n^2+3n+4与T(n)=4n^2+2n+1它们的频度不同,但时间复杂度相同,都为O(n^2)。
·现在我们根据一些书本上和网络上对时间复杂度概念的描述进行一下总结:
T(n),语句频度,时间频度,亦称为时间复杂度。
O(f(n)),渐进时间复杂度。
前者T(n)是某个算法的时间耗费,它是该算法所求解 问题规模 n的函数,而后者O(f(n))是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度O(f(n)),因此,在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。
注意:算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。但是我们总是考虑在最坏的情况下的时间复杂度。以保证算法的运行时间不会比它更长。
常见的时间复杂度,按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)或O(lbn)、线性阶O(n)、线性对数阶O(n*log2n)、
平方阶O(n^2)、立方阶O(n^3)、k次方阶O(n^k)、指数阶O(2^n)。
·下面有一道题目是可以帮助同学们理解概念的:
1、设三个函数f,g,h分别为 f(n)=100*n^3+n^2+1000 , g(n)=25*n^3+5000*n^2 , h(n)=n^1.5+5000*n*lgn
请判断下列关系是否成立:
(1) f(n)=O(g(n))
(2) g(n)=O(f(n))
(3) h(n)=O(n^1.5)
(4) h(n)=O(nlgn)
这里我们复习一下渐近时间复杂度的表示法T(n)=O(f(n)),这里的O是数学符号,它的严格定义是 若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正常数C和n0 ,使得当n≥n0时都满足0≤T(n)≤C*f(n)。(即书本中的定义)。通俗一点就是这两个函数当整型自变量n趋向于无穷大时,两者的比值是一个不等于0的常数。
◆ (1)成立。题中由于两个函数的最高次项都是n^3,因此当n→∞时,两个函数的比值是一个常数,所以这个关系式是成立的。
◆ (2)成立。与上同理。
◆ (3)成立。与上同理。
◆ (4)不成立。由于当n→∞时n^1.5比n*lgn递增的快,所以h(n)与nlgn的比值不是常数,故不成立。
理解完概念之后,就开始求算法的时间复杂度。
从概念中我们知道,要求时间复杂度O(f(n)),就必须要知道算法中频度最大的语句频度f(n),那么要求最大的语句频度f(n)就必须要知道算法的语句频度T(n)。
一般总的思路就是:T(n)-f(n)-O(f(n))。
有时候可以直接找到算法中频度最大的语句,直接算出f(n),然后写出O(f(n))。
也有例外情况就是很难求出语句频度T(n)的
下面会用一些例子做详细的说明:
O(1)
例1:Temp=i;i=j;j=temp;
以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法的执行时 间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
例2:x=91; y=100;
while(y0)
if(x100)
{x=x-10;y--;}
else x++;
解答: T(n)=O(1), 这个程序看起来有点吓人,总共循环运行了1000次,但是我们看到n没有? 没。这段程序的运行是和n无关的,就算它再循环一万年,我们也不管他,只是一个常数阶的函数。
O(n)
例1:
i=1; k=0
while(in)
{ k=k+10*i;i++;
}
解答:T(n)=n-1, T(n)=O(n), 这个函数是按线性阶递增的
您可能关注的文档
- 数据结构》申报表.doc
- 数据结构_王翠茹_数据结构习题.doc
- 数据结构与OOP课程设计题目.doc
- 数据结构与算法.docx
- 数据结构与算法.doc
- 数据结构与算法11.ppt
- 数据结构与算法1.ppt
- 数据结构与算法.pptx
- 数据结构与算法4.pptx
- 数据结构与算法作业.pptx
- 2025AACR十大热门靶点推荐和解读报告52页.docx
- 财务部管理报表.xlsx
- 高中物理新人教版选修3-1课件第二章恒定电流第7节闭合电路欧姆定律.ppt
- 第三单元知识梳理(课件)-三年级语文下册单元复习(部编版).pptx
- 俄罗斯知识点训练课件-七年级地理下学期人教版(2024).pptx
- 课外古诗词诵读龟虽寿-八年级语文上学期课内课件(统编版).pptx
- 高三语文二轮复习课件第七部分实用类文本阅读7.2.1.ppt
- 高考物理人教版一轮复习课件第4章第3讲圆周运动.ppt
- 高考英语一轮复习课件53Lifeinthefuture.ppt
- 2025-2030衣柜行业风险投资发展分析及投资融资策略研究报告.docx
最近下载
- 乍得城网立项建设可行性分析论证研究报告.doc VIP
- 风力发电场生产准备导则 NB/T 10217-2019.pdf VIP
- 部编版三年级(上册)语文写字表生字描红字帖.pdf VIP
- 译林小学英语五上U1-2单元综合试卷(含听力和答案-很好).doc VIP
- 仁爱版(2024)七年级英语上册Unit 3 Lesson 5 Grammar in Use 参考课件.pptx VIP
- 2025年机械设计手册 第五版 目录.pdf VIP
- 25题教学_教务管理岗位常见面试问题含HR问题考察点及参考回答.docx VIP
- T_CSUS 69-2024 智慧水务技术标准.pdf VIP
- 智慧医院能源及节能监管平台建设方案.ppt
- 第四章 Lingo的输入输出及界面 优化软件与应用 技术方案.ppt VIP
文档评论(0)