ch2(算法简介).pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  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文档。上传文档
查看更多
ch2(算法简介)

* * * * * * * * * * * * * * * * * * * * * * 数据结构 数据结构 * 数据结构 * 第2章 算法 2.1 什么是算法(algorithm)? 1、定义 算法:是指建立在数据结构基础上的、求解问题的一系列确切的步骤。 * 数据结构 * (1)有穷性: 经过了有限步骤后,该算法一定会终止。 (2)确定性: 算法中的每一条指令都必须是清楚无二义的,对于相同的输入有相同的输出。 (3)输入: 一个算法有零个或多个由外界提供的量。 (4)输出: 一个算法产生一个或多个输出。 (5)有效性(可行性): 算法是可行的,即算法中描述的操作都是可以通过已实现的基本运算的执行来完成,每种运算至少在原理上能由人用纸和笔在有限的时间内完成。 2、算法的特性 * 数据结构 * (1)自然语言:较为灵活,但不够严谨; (2)计算机语言:严格,但灵活性不足。 (3)伪语言(类语言) 3、算法的描述 * 数据结构 * 例2.1 给定两个正整数m,n(设n ? m),求其最大公因子。 用自然语言描述算法: (1)比较m,n,如果n m,则将m,n进行交换; (2)以n除m,余数为r; (3)判断r是否为零,若r为零,则输出n的当前值,算法结束,否则执行步骤(4); (4)m ← n,n ← r,执行步骤(2)。 * 数据结构 * 用伪码描述算法: input:两个正整数n和m output: n和m的最大公因子 step1:if(m 小于n) step2: 交换n和m; step3:LOOP step4: 以n除m,余数为r ; step5: if(r等于0) 执行step8; step6: m ← n; n ← r; step7:END LOOP step8:输出n; * 数据结构 * 用C语言实现算法: int GreatestCommonFactor(int m, int n) { int r; if(m n) //交换n和m,使之满足n ? m { r = m; m = n; n = r; } if(m 0 n 0) { while(1) { r = m % n; if(0 == r) return n; m = n; n = r; } } return -1; //n或m不是正整数 } * 数据结构 * 4、算法评价:算法和数据结构密切相关。 正确性:是指算法是否正确,特别要注意对 边界条件的检测; 可读性:好是指有助于人们对算法的理解; 健壮性:指算法运行时无论是正确的输入或 错误的输入,算法都应给出正确的 反应; * 数据结构 * (1)时间性能:指运行算法所需的时间的 度量。 (2)空间性能:指运行算法所需要的辅助 空间的规模。 2.2 算法分析 * 数据结构 * 1、时间频度 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。n是问题的规模。 设有以下三个程序段: A: {x++;} ( 最大执行次数为1 ) B: for(i=1;i=n;i++) ( 第一条语句最大执行次数为n+1) {x++;} ( 第二条语句最大执行次数为n ) (总次数2n+1) C: ①for(i=1;i=n;i++)(执行次为n+1) ② for(j=1;j=n;j++) (执行次数为n*(n+1)) ③ {x++;s+=x;}(执行次数为n2) (总次数2n2+2n+1) 2.2.1 算法时间效率的分析 2、时间复杂度(渐进时间复杂度):在数据规模n趋向无穷大时,语句频度T(n)的数量级。记作: T(n)=O(f(n)) f(n)是T(n)的渐近表达式,是T(n)略去低阶项留下的主项。它比T(n)简单。 * 数据结构 * * 数据结构 * 常见时间复杂度从好到坏的级别依次是: O(1)O(logn) O(n) O(n logn) O(n2) O(n3) O(2n) * 数据结构 * 例1:两个n阶矩阵的乘法 C=A*B的算法如下: void maxtrixmult(int n,float a[],float b[],float c[]) { int i, j, k ; float x ; for (i=1;

文档评论(0)

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

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

1亿VIP精品文档

相关文档