数据结构课件ppt第一章-2.pptVIP

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课件ppt第一章-2.ppt

一、算法描述的工具 1. 算法、语言和程序的关系 (1) 算法:对特定问题求解步骤的一种描述,是指令的有限序列。 (2) 描述算法的工具:算法可用自然语言、框图或高级程序设计语言进行描述。自然语言简单但易于产生二义,框图直观但不擅长表达数据的组织结构, 而高级程序语言则较为准确但又比较严谨。 (3) 程序是算法在计算机中的实现(与所用计算机及所用语言有关)。 2.可读性 算法是为了方便人的阅读与交流,其次才是机器执行。 可读性好有助于人对算法的理解。 算法的分析 1. 算法的分析是研究和比较各种算法的性能和优劣。 2. 算法的时间性能和空间性能是算法分析的两个主要方面,分别称为: 3. 其目的主要是考察算法的时间和空间效率,以求改进算法对不同算法进行比较。 假如,随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,记作: 如何估算算法的时间复杂度? 时间复杂度分析法规 执行一条读写或赋值语句用o(1)时间。 依次执行一系列语句所用时间采用求和准则。 判断语句的耗时主要是执行语句所用的时间,检验条件还需o(1)。 循环语句的运行时间为多次迭代中执行循环体以及检验循环条件的耗时,常用乘法准则。 解:设基本语句的执行次数为f(n),有 f(n)=n2+n3 因为程序段的时间复杂度 T(n)=f(n)=n2+n3=c*n3=O(n3), 其中c为常数,所以该程序段的时间复杂度为O(n3)。 由此可看出,选择f(n)表达式中增长最快的项作为T(n)的量级。 这个算法的时间复杂度随待排序数据的不同而不同,当某次排序过程中没有任何两个数组元素交换位置,则表明数组元素已排序完毕,此时算法将因标记change=FALSE不满足循环条件而结束。 但是在最坏情况下,每次排序过程中至少有两个数组元素交换位置,因此,应该按最坏情况计算该算法的时间复杂度。 设基本语句的执行次数为f(n),最坏情况下有 f(n)=n-2+n(n-1)/2 取f(n)表达式中增长率最大的项n2。 所以该程序段的时间复杂度为O(n2)。 数据结构中常用的时间复杂度频率计数 课堂练习 1. 下面关于算法的说法,正确的是( ) 算法最终必须由计算机程序实现 为解决某问题的算法与为该问题编写的程序含义相同。 算法的可行性是指指令不能有二义性。 以上几个都是错误的。 2. 计算机中的算法是指解决某个问题的有限运算序列,它必须具备输入、输出、( )等5个特性。 可执行性、可移植性和可扩充性 可执行性、有穷性和确定性 确定性、有穷性和稳定性 易读性、稳定性和确定性 3. 算法分析的目的是( ) 找出数据结构的合理性。 研究算法中的输入和输出关系。 分析算法的效率以求改进。 分析算法的易懂性和文档性。 算法分析的两个主要方面是( ) 空间复杂性和时间复杂性。 正确性和简单性。 可读性和文档性。 数据复杂性和程序复杂性。 程序段的时间复杂度为( ) for( i=0; im; i++) for( j=0; jn; j++) A[i][j]= i*j ; 课后练习 一、试说明下列计算过程是否是一个算法,并说明理由。 1. 开始; 2. n=0; 3. n=n+1; 4. 重复3; 5. 结束。 二、下列程序段的时间复杂度为多少? x=n; /*n1*/ y=0; while(x=(y+1)*(y+1)) y=y+1; 三、名次解释 1.抽象数据类型 2. 算法的时间复杂度 算法 = 控制结构 + 原操作 (固有数据类型的操作) 算法的执行时间 = 原操作(i)的执行次数×原操作(i)的执行时间 算法的执行时间和原操作的执行次数之和成正比 从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法的时间度量,定义为算法的时间复杂度。 语句的频度:该语句重复执行的次数。 原操作的基本操作:重复执行次数和算法的执行时间成正比的原操作。把求解问题的关键操作,如加法、减法和比较的运算指定为基本操作。多数情况下是最深层循环内的语句。 例 一 两 个 矩 阵 相 乘 void mult(int a[], int b[], int c[] ) { // 以二维数组存储矩阵元素,

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档