- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第02章-算法
程序和菜谱的关系? 写菜谱:材料+操作程序 2.1 算法的概念 2.2 简单算法举例 2.3 怎样表示一个算法 2.3.1 用流程图表示算法 2.3.3用伪代码表示算法 总结 作业 P36 2.4(1)(6) 选做:2.8(1) 可自由选择用传统流程图或N-S流程图实现 看到这个问题大家一定觉得很奇怪,程序和菜谱有啥关系呢? 老子曾经说过一句话:治大国若烹小鲜 治理国家都可以用烹小鲜来类比,写程序要比治理国家简单得多,那么我们来看看写程序和写菜谱的关系。 先给大家看一个菜谱的例子 比如求1到100累加的问题,大家会怎么解决呢? (讨论) 在计算机里面,乘法运算是用加法来实现。 算法的计算效率是我们在设计算法时需要重点考虑的,特别是在一些实时处理的场合。 当然,计算效率不是好算法的唯一衡量标准,这个在后面我们会进一步讨论。 什么是结构化算法? 可以看出,写菜谱包括两个方面,就是材料和操作程序。 写程序也一样,包括 对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm) 总结:在我们这门课程中,我们就是借助C语言这个语言工具作为载体,给大家介绍简单的数据结构、算法和程序设计方法,把大家引入高级语言程序设计之门。要真正掌握一个语言工具,还需要靠大家在今后学习、工作的过程中继续摸索。 对于算法,我们可以有一个更严谨的定义,所谓算法, 就是一个有穷规则的集合,其中的规则规定了一个解决某一特定类型问题的运算序列。 那么,要求1到1000的累乘,有同学知道要怎么做吗? 这个算法与前一算法不同的地方就是改变i变化的步长。 这个例子看时间关系,时间太紧就pass 所谓有穷,就是一个合理的时间范围,比如一个算法要执行1000年才能结束,虽然操作步骤是有限的,但不能视为有效的算法。 确定性:每个步骤都只有一种含义,比如**同学走到前面来,这句话就是不确定的。 有效性:比如b=0,a/b就不能有效地执行。 在本课程的学习中,我们会把算法的健壮性稍微放宽一点, 但今后大家在解决实际问题时,一定要考虑算法的健壮性问题,比如容错处理。 在结构化流程图的基础上,1973年,由美国的两个学者提出N-S结构化流程图. 在循环体中,一定要有改变循环控制变量的操作,这个在第6章我们还会讨论。 如果时间允许,先由同学讨论 简单介绍 * 第2章 程序的灵魂—算法 本章主要介绍算法的概念、算法的表示及结构化程序设计方法。 2.1 算法的概念 2.2 简单算法举例 2.3 怎样表示一个算法 2.4 结构化程序设计方法 节瓜茸羹 材料:节瓜600克,草菇50克,虾仁100克,蟹肉75克,蛋白1只,上汤400毫升,姜1片,葱1条。 调味料:盐1茶匙,糖1/4茶匙,粟粉、酒各1茶匙,水1汤匙,胡椒粉少许。 烹调步骤:(1)节瓜洗净,去皮,磨茸。(2)草菇洗净切粒。(3)虾仁去肠洗净。(4)葱切粒。(5)上汤、节瓜茸、草菇、虾仁、蟹肉、姜片同放深碗内,盖上盖子,高火煮5分锺.(6)加入调味料搅拌後,高火再煮3分锺。(7)取出搅入蛋白,撒上葱粒,便可供食。 写程序: 对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm) 著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序 数据结构+算法+程序设计方法+语言工具 完整的程序设计: 广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。 方法1:1+2,+3,+4,一直加到100 加99次 方法2:100+(1+99)+(2+98)+…+(49 +51)+50 = 100 + 49×100 +50 加50次 对同一个问题,可有不同的解题方法和步骤 例: 求 两者的差异在于算法的计算效率 计算机算法可分为两大类别: 数值运算算法:解决求数值解的问题,例如求方程的根、求函数的定积分等。 非数值运算算法:主要用于解决需要用分析推理和逻辑推理才能解决的问题,如人工智能中的问题;另外,查找和分类也属于此类算法。最常见的是用于事务管理领域,例如图书检索、人事管理、行车调度管理等。 算法: 就是一个有穷规则的集合,其中的规则规定了一个解决某一特定类型问题的运算序列。 例2.1: 求1×2×3×4×5 步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120 如果要求1×2×…×1000,则要写999个步骤 S1:使p=1 S2:使i=2 S3:使p×i,乘积仍放在变量p中,可表示为:
文档评论(0)