数据结构教学作者主编马世霞第1章节绪论课件幻灯片.ppt

数据结构教学作者主编马世霞第1章节绪论课件幻灯片.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.4.2.2类描述算法的语言选择 为了解决理解与执行这两者之间的矛盾,人们常常使用一种称为伪码语言的描述方法来进行算法描述。伪码语言介于高级程序设计语言和自然语言之间,它忽略高级程序设计语言中一些严格的语法规则与描述细节,因此它比程序设计语言更容易描述和被人理解,而比自然语言更接近程序设计语言。 1.4.2.3设计实现算法过程步骤 (1)找出与求解有关的数据元素之间的关系(建立结构关系)。 (2)确定在某一数据对象上所施加运算。 (3)考虑数据元素的存储表示。 (4)选择描述算法的语言。 (5)设计实现求解的算法,并用程序语言加以描述。 1.4.3 算法性能分析与度量 好的算法具备时间效率高和存储量低的特点。对同一问题,有多个算法,执行时间短的效率高,存储量是指执行过程需要的最少存储量。 (1)关于算法执行时间 一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。 两个算法的第一条、最后一条语句是一样的,中间部分是我们要关注的,把循环当作一个整体,忽略头尾循环判断的次数,这两个算法的差别就是1与n的区别。 (2)时间复杂度 对于算法分析,我们关心的是算法中语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级(Order of Magnitude )。常用“大O表示法”表示:T(n)= O(f(n))。它表示随着问题的规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度。 函数的渐近增长:给定的两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的nN时,总有f(n)g(n),我们称f(n)的增长渐近快于g(n)。如C算法、D算法与E算法。 当n=1,2时,C算法不如D算法。但当n2时,C算法优于D算法。随n的增加,算法C比D越来越好。于是我们可以说,当输入数据n,只要超过某一数值N时,这个函数就总是大于另一函数,我们称函数是渐近增长的。 当n2时,即N=3时,算法D与E的渐近增长是相同的。都记为O(n2)。 (3)推导大O阶的方法 1)程序运行时间中的常数用1代替。如运行3次,记为O(1), 运行100次,也记为O(1)。 2)在大O()函数中运行次数只取最高阶项,并且最高阶项的常数为1。如5n2记O(n2)。 它表示随问题规模n的增大算法的执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。 一般情况下,随n的增大,T(n)的增长较慢的算法为最优的算法。 按大O阶推导方法: A算法f(n)=3,常数项3次用1代替,记O(1)。 B算法f(n)=2n+3,常数项3次用1代替,2n的系数2也改为1,记O(n) C算法f(n)=C(3n+5),记为O(n)。 D算法f(n)= (2n2),记为O(n2)。 E算法f(n)=(2n2+3n+5), 记为O(n2)。按最高项,其余忽略不计。 【例1-6】在下列三段程序段中,给出原操作x=x+1的时间复杂度分析。 (1)x=x+1 ; 程序执行1次,其时间复杂度为O(1) 称之为常量阶; (2)for (i=1; i= n; i++) //执行2n+2次 x=x+1; //执行n次 程序共执行3n+2, 只取最高项,去掉该项的系数, T(n)=O(n),称之为线性阶; (3)for (i=1; i= n; i++) //执行2n+2次 ?????? ? for (j=1;j= n; j++) //执行n(2n+2) 次 x=x+1; //执行n2次, 程序共执行3n2+4n+2, 只取最高项,去掉该项的系数,T(n)=O(n2), 称之为平方阶。 常见的时间复杂度 O(1)<O(log2n)<O(n)<O(n2)<O(n3)<O(2n) (3)算法的空间复杂度 一个程序的空间复杂度(Space complexity)是指程序运行从开始到结束所需的存储量。 关于算法的存储空间需求,类似于算法的时间复杂度,为算法所需存储空间的量度,记做:S(n)= O(f(n)) 其中n为问题的规模。一般情况下,一个程序在机器上执行时,除了需要寄存本身所用的指令,常数,变量和输入数据以外,还需要一些对数据进行操作的辅助存储空间。其中对于输入数据所占的具体存储量只取决于问题本身,与算法无关,只需要分析该算法在实现时所需要的辅助空间单元个数就可以了。若算法执行时所需要的辅助空间相对于输入数据量而言是个常数,则称这个算法为原地工作,辅助空间为O(1)。 算法的执行时间的耗费和所序的存储空

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档