- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(程序设计初步讲义
第3章 程序设计初步
3.1 算法初步及其描述方法
3.1.1算法初步
1.什么是算法
算法是为解决一个特定问题而采取的特定的有限的步骤。广义地说,做任何事情都有算法,例如一张太极拳打法图解也可以看作是一个“太极拳算法”。因此,算法概念不限于算术问题,而是具有更广泛的含义。
从计算机应用的角度来说,算法是指完成一个任务所需要的具体步骤和方法(解决问题的方案)。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。
【算法3.1】给定两个正整数p和q,求其最大公因数。
古希腊数学家欧几里德给出的算法:
步骤1:如果p q,交换p 和q 。
步骤2:求p/q的余数r 。
步骤3:如果r = 0,则 q 就是所求的结果 。
否则反复做如下工作:令p = q,q = r,重新计算 p 和q 的余数r,直到r = 0为止,则 q 就是原来的两正整数的最大公因数。
算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
从原则上说,有了算法,人们就可以借助纸、笔和算盘等工具直接求解问题了。但如果问题比较复杂,计算步骤很多,则应通过编写计算机程序,使用计算机解决。
2.算法的特征
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。
一个算法应该具有以下五个重要的特征:
(1)有穷性:一个算法必须保证执行有限步之后结束。
(2)确切性:算法的每一步骤必须有确切的定义。
(3)输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定义了初始条件。
(4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。
(5)可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
3.算法的类型和结构
(1)算法的类型
算法可分为两大类:数值算法和非数值算法。
数值算法是为数学问题形成一个构造性解法的完备而确切的描述,并规定方法中仅允许使用加、减、乘、除等基本的算术运算。
非数值算法广泛应用在“数据处理”的场合。需要对大量的信息(数据)进行加工处理,包括转换、分类、查找、排序和存储等。常用的算法有穷举、递推、顺序查找和冒泡排序等。
(2)算法的结构
一个算法是由“结构”和“原操作”构成的。原操作包括:输入、输出、赋值和比较等。算法的三种基本结构是:顺序结构、分支结构和循环结构。用这三种基本结构可以表示任意一个复杂的算法。
①顺序结构
顺序结构是指通过安排操作的排列顺序来决定算法流程的结构。在这种结构中,各个操作是依次执行的。顺序结构是由若干个依次执行的处理块组成,这是任何一个算法都离不开的基本主体结构。
②分支结构
在绝大多数情况下,算法不会按部就班地从第一条操作执行到最后一条操作,往往由特定的条件决定执行哪个操作,这就是分支结构。分支结构是以条件或情况的判断为起始点,它是人脑判断思维活动的抽象。最基本的分支结构是二分支结构,根据判断逻辑是否成立而决定选择哪一边的处理块去执行。
③循环结构
循环结构是指在算法设计中,从某处开始有规律地反复执行某一处理块,这个处理块称为循环体。循环体的执行次数由一个控制循环条件决定。满足条件反复做,不满足则停止。
3.1.2算法的描述工具
设计一个算法可以根据问题的不同需要用某种语言符号来描述。目前最常用的几种算法描述工具有:自然语言、流程图、N-S图、伪代码等。
1.自然语言
自然语言就是人们日常使用的语言,可以是中文、英文等。用自然语言表示的算法通俗易懂,但一般篇幅较冗长,表达上不易准确,易引起理解上的“歧义性”(即对同一段文字,不同的人会有不同的理解)。
【算法3.2】输入3个数,求其最大数。
分析:该算法可以使用分支结构表示。设num1,num2,num3存放3个数,max存放其最大值。为求其最大数,只要对3个数进行比较,可按如下步骤去做:
S1:输入3个数num1,num2,num3;
S2:先把第1个数num1的值赋给max;
S3:将num2与max比较,如果num2max,则把num2的值赋给max,否则,不做任何事情。
S4:将num3与max比较,如果num3max,则把num3的值赋给max,否则,不做任何事情。
S5:输出max的值,即最大值。
【算法3.3】求1+2+3+…+100。
分析:该算法可以使用循环结构表示。设n存放1到100
文档评论(0)