- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法的基本概念
3畅1
用计算机解决问题的过程可以分成3个阶段:分析问题、设计算法和用程序实现算法从而解
决问题。 其中最关键的是设计算法,所谓算法,是一组规则的有穷集合,这些规则完整、准确地给
出了解决某一特定类型问题的一系列运算。
通俗地讲,算法是为解决一个或一类问题的方法和步骤。 这些方法和步骤反映了办事和解
决问题的客观规律,只有遵循这些规律才能解决问题、办好事情,否则就解决不了问题、办不好事
情。 实际上,日常生活中“算法”的例子比比皆是。 例如,菜谱可以看成是做菜的算法、议程可以
看成是开会的算法、舞谱可以看成是跳舞的算法、乐谱可以看成是演奏和歌唱的算法,拳谱可以
看成是拳术运动的算法等。
如前所述,计算机处理的问题可分为数值计算和非数值计算两大类,因此,计算机算法也可
分为数值运算算法和非数值运算算法两大类。 数值运算的目的是求数值解,如求方程的根、求一
个函数的定积分等。 非数值运算应用的领域十分广阔,最常见的是事务管理领域,如图书检索、
人事管理、行车调度和管理、航空飞行调度和管理等。 目前,计算机在非数值运算方面的应用远
远多于在数值运算方面的应用。 就数值运算而言,由于有现成的模型和成熟的数值分析方法,研
究比较深入,算法比较成熟。 而且,人们常常把这些算法以程序的形式汇编成册,或者将这些程
序存放在磁盘或磁带上,供用户使用。 例如,C 的标准库中就有很多常用的数学函数供用户使
用,其头文件是math畅h。 而非数值运算则种类繁多,要求各异,难以规范化,目前只有一些典型
的非数值运算算法,如排序、查找算法有比较深入的研究,其他非数值运算问题往往需要使用者
参考已有的类似算法重新设计解决特定问题的专门算法,这是非数值运算算法的困难所在。
对于同一个具体问题,可能会有若干个算法,一般来说,不同的算法占用的计算机资源、花费
的时间都可能不一样,即有优劣之分,所以对算法应该进行分析,选择最优的算法。
本书不可能罗列所有的算法,只能通过对一些典型算法的介绍帮助读者了解如何分析问题、
63
3畅2 算法的特性与要素
设计算法。
算法的特性与要素
3畅2
下面通过简单的算法实例说明算法的特性和基本要素。
简单算法实例
3畅2畅1
例3畅1 计算81+82+83+84+85+86 的值。
可以这样进行:
步骤1,计算81+82,其和为163;
步骤2,计算163+83,其和为246;
步骤3,计算246+84,其和为330;
步骤4,计算330+85,其和为415;
步骤5,计算415+86,其和为501。
这是最原始的计算方法,算法虽然是正确的,但有两个较大的弱点。 首先,它不便于扩展,增
加一个加数就要增加一步算法,数据一多,这个算法就很烦琐,没有实用性;其次,这个算法只能
计算这一组特定的数据,数据以常数的形式“固化”在算法中,无法改变,除非重写算法,不灵活,
没有通用性;第三,中间结果无法保存和再利用,不便于在计算机上实现自动计算,为此需要对这
一算法进行改造。
对上面的算法稍加分析,不难发现,这一算法的每一步都在做同样的运算(加法运算),只不
过运算对象不同而已。 是否可以将这些相同的步骤合并在一起呢? 回答是肯定的。 可以将所有
的求和运算合并在一个步骤中,并且将求和对象由常量改为变量,让变量不断取新的值,并返回
到求和运算步骤进行新数值的求和运算。
按照上述思想,新算法中共设置3个变量,一个变量s 代表累计求和的值,另一个变量i 代表
逐渐增大的加数,第3个变量j 代表最大的一个加数,用它来控制求和运算的结束,新算法如下。
算法S :求连续整数之和。
S1畅输入81给i ,86给j ; //改变输入值,可求不同和数,需i <=j
S2畅s =0;
S3畅s =s +i ;
S4畅i =i +1;
S5畅若i
文档评论(0)