2 程序的灵魂-算法 - 黄淮学院.docVIP

  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文档。上传文档
查看更多
2 程序的灵魂-算法 - 黄淮学院

2 程序的灵魂-算法 - 黄淮学院 值得拥有的资料 是来自平时学习积累总结的 有问题的地方肯定有的 还请大家批评指正! 2 程序的灵魂-算法 一个程序应包括: z 对数据的描述 在程序中要指定数据的类型和数据的组织形式 即数据结构(data structure) z 对操作的描述 即操作步骤 也就是算法(algorithm) Nikiklaus Wirth 提出的公式:数据结构+算法=程序 教材认为: 程序=算法+数据结构+程序设计方法+语言工具和环境 这 4 个方面是一个程序涉及人员所应具备的知识 本课程的目的是使同学知道怎样编写一个 C 程序 进行编写程序的初步训练 因此 只介绍算法的初步知识 2.1 算法的概念 做任何事情都有一定的步骤 为解决一个问题而采取的方法和步骤 就称为算法 计算机算法:计算机能够执行的算法 计算机算法可分为两大类: 数值运算算法:求解数值; 非数值运算算法:事务管理领域 2.2 简单算法举例 【例 2.1】求1×2×3×4×5 最原始方法: 步骤 1:先求 1×2 得到结果 2 步骤 2:将步骤 1 得到的乘积 2 乘以3 得到结果 6 步骤 3:将6再乘以 4 得 24 步骤 4:将24 再乘以5 得 120 这样的算法虽然正确 但太繁 改进的算法: S1: 使t=1 S2: 使i=2 S3: 使t×i, 乘积仍然放在在变量 t 中 可表示为 t×i→t S4: 使i 的值+1 即 i+1→i S5: 如果i=5, 返回重新执行步骤 S3以及其后的 S4 和 S5;否则 算法结束 如果计算 100!只需将 S5:若 i=5 改成 i=100 即可 如果该求 1×3×5×7×9×11 算法也只需做很少的改动: S1: 1→t S2: 3→i S3: t×i→t S4: i+2→t S5:若 i=11, 返回 S3 否则 结束 该算法不仅正确 而且是计算机较好的算法 因为计算机是高速运算的自动机器 实现循环 轻而易举 思考:若将 S5 写成:S5:若 i<11, 返回 S3;否则 结束 【例 2.2】有50 个学生 要求将他们之中成绩在 80 分以上者打印出来 如果 n表示学生学号 ni表示第个学生学号;g表示学生成绩 gi表示第个学生成绩; 则算法可表示如下: S1: 1→i S2: 如果gi=80 则打印ni和gi 否则不打印 S3: i+1→i S4:若 i=50, 返回 S2 否则 结束 【例 2.3】判定 2000 - 2500 年中的每一年是否闰年 将结果输出 润年的条件: 1) 能被 4 整除 但不能被 100 整除的年份; 2) 能被 100 整除 又能被 400 整除的年份; 设 y为被检测的年份 则算法可表示如下: S1: 2000→y S2:若 y不能被 4 整除 则输出 y不是闰年 然后转到 S6 S3:若 y能被4 整除 不能被 100 整除 则输出 y是闰年 然后转到 S6 S4:若 y能被100 整除 又能被 400 整除 输出 y是闰年 否则输出 y不是闰年 然后转到 S6 S5:输出 y不是闰年 S6:y+1→y S7:当 y=2500 时, 返回 S2 继续执行 否则 结束 【例 2.4】求 100 1 99 1 ... 4 1 3 1 2 1 1 ?++?+? 算法可表示如下: S1: sigh=1 S2: sum=1 S3: deno=2 S4: sigh=(-1)×sigh S5: term= sigh×(1/deno ) S6: term=sum+term S7: deno= deno +1 S8:若 deno=100 返回 S4;否则 结束 【例 2.5】对一个大于或等于 3 的正整数 判断它是不是一个素数 算法可表示如下: S1: 输入n 的值 S2: i=2 S3: n 被 i 除 得余数 r S4:如果 r=0 表示 n 能被 i 整除 则打印 n不是素数 算法结束;否则执行 S5 S5: i+1→i S6:如果 i=n-1 返回 S3;否则打印 n是素数;然后算法结束 改进: S6:如果i= n 返回S3;否则打印n是素数;然后算法结束 2.3 算法的特性 z 有穷性:一个算法应包含有限的操作步骤而不能是无限的 z 确定性:算法中每一个步骤应当是确定的 而不能应当是含糊的、模棱两可的 z 有零个或多个输入 z 有一个或多个输出 z 有效性:算法中每一个步

文档评论(0)

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

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

1亿VIP精品文档

相关文档