算法基本元素.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
{ m = n; n = r; r = m % n; } ? return r; } 对比求解两个整数的最大公约数算法的伪码形式和C语言程序形式,可以发现,其差别主要有以下三点: (1) 在C语言程序中,所有变量在第一次出现时,前边都增加了符号int,这称为变量定义。在所有高级语言中,变量定义是指给变量分配一个具体大小的存储单元空间。 (2) 在C语言程序中,赋值语句采用了更为简单的表示形式。例如,C语言程序中的语句“temp = m;”就表示伪码形式算法的语句“ASIGN temp m”。 (3) 在C语言程序中,每条语句结束后都增加了语句的结束标记符号“;”。 (4) 在C语言程序的最后一行,增加了一条“return r;”语句,该语句是C语言程序实现过程的数据传送所必须的。 上述C语言程序中增加的部分,都属于把算法转换为程序时要考虑的“细节”。这是因为,程序是要让计算机具体运行的,如果没有上述“细节”,计算机就无法运行程序。 语言程序中不定义变量temp,计算机就无法知道变量temp需要分配多大的存储单元空间,该变量是需要占用4个字节呢,还是需要占用8个字节?我们在第2章讨论过,存储单元的字节数不同,该存储单元存放的数据(即这里的变量)的数值范围就不同。4个字节的存储单元可表示的数据的数值范围为-32 768~+32 767,如果要处理的数据大于这个范围,就要定义占用更大存储单元空间的变量。 6.4 循环结构和递归结构 用计算机求解问题(或称处理数据)的效率非常高的原因,是计算机的运行速度非常快。计算机是通过运行程序来求解相应问题的,如果程序中的每条语句都只执行一次,那么这样的程序要么只能求解非常简单的问题,要么程序设计人员编写的程序中语句行将非常之多。实际的情况是上述两种情况都不是,原因是程序中的每条语句都只执行一次的假设不成立。 6.4.1 循环结构 循环结构是算法中最主要和最基本的一种重复结构。下面首先给出循环结构算法的两个例子,然后用例6-2算法的执行过程讨论循环结构算法的执行流程。 1. 循环结构算法的设计 【例6-1】 设计表的查找问题的文字形式的顺序查找算法。 分析:对于有n个数据元素的表,查找表中是否存在一个数据元素为x的数据元素的顺序查找过程是:用数据元素x 依次和表中的第一个数据元素到表中的最后一个数据元素比较, 果表中的某一个数据元素和数据元素x相同,则查找成功(即表中存在数据元素x),查找过程结束;如果表中的所有数据元素都和数据元素x 不相同,则查找失败(即表中不存在数据元素x),查找过程结束。这样的顺序查找算法是一个循环结构的算法。 下面给出使用了伪码WHILE-DO的文字形式的循环结构的查找算法: (1) 取表中的第一个数据元素赋给变量temp; (2) WHILE(如果变量temp的数值不等于变量x中数值,并且表中还存在下一个数据元素)顺序执行,否则转到(4); (3) DO(取表中的下一个数据元素赋给变量temp)转到(2)继续执行; (4) 如果temp的数值等于变量x数值,则查找成功;否则查找失败; (5) 结束。 【例6-2】 设计计算阶乘n!问题的伪码形式的循环结构算法。 分析:n!等于n×(n-1)×(n-2)×…×2×1,所以,计算阶乘n!的算法是一个循环结构的算法。 下面给出计算阶乘n!的伪码形式的循环结构的算法。为简化表示以及和高级语言程序比较方便起见,下面的赋值语句采用符号“=”表示。例如,语句“pro=1”等同于语句“ASIGN pro 1”。算法如下: PROCEDURE Factorial(n) { pro=1; m=1; WHILE(m=n) DO { pro=pro*m; m=m+1; } } 2. 循环结构算法的执行流程 下面用例6-2算法的执行过程讨论循环结构算法的执行流程。对于计算阶乘问题的算法,若要计算4!,则n=4,执行过程是: (1) 执行pro=1和m=1;

文档评论(0)

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

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

1亿VIP精品文档

相关文档