5计算机科学导论算法资料.ppt

  1. 1、本文档共118页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5计算机科学导论算法资料.ppt

* 例: 给定K值,求T=1+2+3+…+K 开始 输出 T 的值 结束 输入K T+I ?T I+1 ?I I≤K Y N 1?I,0 ?T 循环 输入K 输出 T 的值 I≤K 1?I,0 ?T T+I ?T I+1 ?I 伪代码是算法的一种类似英语的表示法。它是部分英语和部分结构化代码的组合。 英文代码部分采用不严格的语法,很容易看懂; 代码部分包含基本算法结构(顺序、选择和循环)的扩展形式。 目前还没有伪代码的标准。 3. 伪代码 伪代码描述算法的一般组成: 算法头:算法的名字。 目的、条件和返回值: 目的:有关算法要做什么的简短说明 前置条件:列出算法所有前驱条件 后置条件:指出算法产生的影响 返回值:算法返回的结果或无返回值 语句序号:表示语句之间的附属关系。 例:用伪代码描述在一数列中找最小值的算法 Algorithm (算法):Finding Smallest Purpose(目的):在一数列中找最小值 Pre(前置条件):List of numbers(数列) Post(后置条件):None Return(返回值):The smallest 3 2 4 1 6 a: S 3 2 1 算法:设数列中第一个数为最小值S,然后用后续数依次与S比较,若比S小,则用该数替换原S的值,全部比较完成后S即最小值。 1.Set smallest to the first number 2.Loop(not end of list) 2.1 if(next number smallest) 2.1.1 set smallest to next number 2.2 end if 3. end loop 4. return smallest End Finding Smallest 数列?ai(i=1,5) a1 ?S, 2? i i ≤5 Y aiS N ai ?S i+1?i 返回最小值S 1. 数列?ai ( i=1,5 ) 2. a1 ?S, 2? i 3. while(i≤5) 3.1 if(aiS ) then ai ?S endif 3.2 i+1?i end while 4. return S 伪代码不一定按上述严格的格式,且可以使用汉字,只要把算法表达清楚即可。 数列?ai(i=1,5) a1 ?S, 2? i i ≤5 Y aiS N ai ?S i+1?i 返回最小值S s=a[1]; i=2; while(i=5) { if(a[i]s ) s = a[i]; i= i+1; } return s; 数列?ai(i=1,5) a1 ?S, 2? i i ≤5 Y aiS N ai ?S i+1?i 返回最小值S 4. 计算机语言 计数 累加 值交换 求最大(小)值 四、基本算法 穷举 迭代 递推 递归 1. 穷举法 基本思想 首先根据问题的部分条件预估计出答案的范围 在预估计的答案范围内,对所有可能的情况逐一验证。 若某个情况使验证符合题目的全部条件,则该情况是本题目的一个答案。 分析: 假设a,b分别代表父亲和儿子的年龄,x年后a=2b。根据人的寿命,x取值为:1,2,…,150 问题:父亲今年30岁,儿子今年6岁,在父亲有生之年中,多少年后父亲的年龄是儿子的2倍? 算法: 1. 考察x可能的范围:x=1,2,…,150; 2. 30+x?a, 6+x?b 3. 若a=2b,则输出x。 开始 结束 输出a,b,x x+1 ?x x≤150 Y N 0 ?x a =2b Y N 30+x ?a 6+x ?b X年后,父亲和儿子的年龄 * 分析: 对5本书从1至5编号,假设a,b两个人分别借这5本书中的1本。当a=i时,表示a借了编号为i的书。则a、b的取值范围为:1 = a、b= 5 当2个人所借的书的编号不相同时(a!=b) ,就是满足题意的一种借阅方法。 问题:小明有5本新书,要借给A、B两位小朋友,若每人每次只能借一本,则可有多少种不同的借法? 算法: 1.考察a可能的范围:a=1,2,3,4,5; 2.考察b可能的范围:b=1,2,3,4,5; 3.验证a,b的所有取值,若a!=b,则输出a,b。 开始 结束 a+1 ?a a≤5 Y N 1?a 输出a,b b+1 ?b b≤5 Y N 1 ?b a ?b Y N a=1: b=1 不输出

文档评论(0)

love + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档