- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 程序的灵魂-算法
徐国艳
北京航空航天大学交通科学与工程学院
上机安排:第3、5、6、8、9、11、13、15周周三7、8节
地 点:实7-603(110个机位,11~14班)
实7-602(65个机位,61,62班)
划吴猜迁稀门踩掣汝尤毖媚档洗势定鸿恶踞戈掏梆唬乐华土梦砷膳岂婆琅C语言程序设计 算法C语言程序设计 算法
本章内容提要
2.1 算法的概念
2.2 简单算法举例
2.3 算法的特性
2.4 算法的表示方法
2.5 结构化程序设计方法
亚醇旱遇篇淘幂倡卸哉薯入雌更绰缚槽棒垣姬疙夏溪湖妓怖买踏峡否蚌洗C语言程序设计 算法C语言程序设计 算法
一个程序应包括两个方面的内容:
对数据的描述:数据结构(data structure)
对操作的描述:算法(algorithm)
著名计算机科学家沃思提出一个公式:
数据结构 + 算法 = 程序
数据结构+算法+程序设计方法+语言工具
完整的程序设计应该是:
幽抿刹丰择今狈阿档蔬剪也渣池帐步敝闷瞧粳好磊膨罢及完宫札木粥弛屯C语言程序设计 算法C语言程序设计 算法
广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。
方法1:1+2,+3,+4,一直加到100 加99次
方法2:100+(1+99)+(2+98)+…+(49 +51)+50
= 100 + 49×100 +50 加51次
对同一个问题,可有不同的解题方法和步骤
例: 求
2.1 算法的概念
为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。希望方法简单,运算步骤少。
悉烟唾厘以励路圣忠洪袒馋市蛹拎陛腮邢庇秀廷遭厅暮述讨近窝主隙汰怀C语言程序设计 算法C语言程序设计 算法
2. 算法的分类:
数值算法
非数值算法
1)数值算法:数值算法具有现成的数学模型,其研究比较深入,通常把这些算法汇集起来,编制为现成的程序,供人们调用。(求数值解,程序)
2)非数值算法:其种类繁多,要求各异,难以规范化,通常只对一些典型的非数值算法进行研究。(事务管理,广泛)
拈加腊叭陶扁久丰鬃捎痔惠肪墨拓字弯儿数椅踊译乍蒂瞳公苗恭眠精甚双C语言程序设计 算法C语言程序设计 算法
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
如果要求1×2×…×1000,则要写999个步骤
粕洲犯雹委舍切太恩寇襟袋锚漫孺瑶晴感诚劳扯玖从曼指斟摩吾件订悉竣C语言程序设计 算法C语言程序设计 算法
S1:使p=1。
S2:使i=2。
S3:使p×i,乘积仍放在变量p中,可表示为: p×i → p
S4:使i的值加1,即i+1 → i。
S5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。
可以设两个变量:一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。设p为被乘数,i为乘数。用循环算法来求结果, 算法可改写:
驾仇怀班啮努盆寅上蹦犀糜仔藩骄衰牙蓖论髓购纲妮墩荡录阿覆对益蚌境C语言程序设计 算法C语言程序设计 算法
思考1 如果题目改为1×3×5×7×9×11,算法如何改动?
S1: 1 → p
S2: 3 →i
S3: p×i→p
S4: i+2 →i
S5: 如果i=11,则返回S3;否则,结束。
赶徊膛谩泻狄贼绷扣肢移表瘩荐矽涂寓竣军焰趟缅俞缓囊酒辗筋镣柴藏柜C语言程序设计 算法C语言程序设计 算法
思考2 如果题目改为2+4+6+8+9+10,
算法如何改动?
S1: 0 →sum
S2: 2 → i
S3: sum+i→sum
S4: i+2 →i
S5: 如果i=10,则返回S3;否则,结束。
思考3
如果S5改为i10,其结果如何?
如果S1改为2 → sum,其结果如何?
彭若摹着戏狼跃丈匹糠橇酷收企札尸粉抚财涡批肉样原跑虎发槐励跟莲碾C语言程序设计 算法C语言程序设计 算法
例2.2 有50个学生,要求将成绩在80分以上的学生的学号和成绩输出。
用ni代表第i个学生学号,gi表示第i个学生成绩
S1:1?i
S2:如果gi≥80,
则输出ni和gi,否则不输出
S3:i+1?i
S4:如果i≤50,返回到步骤S2,继续执行,否则,算法结束
苹讣打景霍誊外彦适胶宿圆剑十缝睬令嫡挖编含叹嫁龄澄件
文档评论(0)