第4章计算机软件技术基础 算法与数据结构.doc

第4章计算机软件技术基础 算法与数据结构.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章计算机软件技术基础 算法与数据结构.doc

第4章计算机软件技术基础 算法与数据结构 流程图 流程图是一种用于表示算法或过程的图形。在流程图中,使用各种符号表示算法或过程的每一个步骤,使用箭头符号将这些步骤按照顺序连接起来。 使用流程图表示算法可以避免自然语言的模糊缺陷,且依然独立于任何一种特殊的程序设计语言。 流程图的使用人员包括分析人员、设计人员、管理人员、工程师、编程人员等。 如图4-1所示是一个典型的流程图示例,该图描述了计算前N项整数之和的算法流程。 一般流程图 流程图有多种类型,下面主要介绍一般流程图与NS图的用法。 在一般流程图中,主要的图形元素包括开始/结束标志、箭线、处理框、输入/输出框、条件判断框等。 一般流程图的图形元素表示方式如图4-2所示。 NS图 下面介绍NS图的特点。 NS图是Nassi-Shneiderman图的简称,有时也称为N-S图、盒图等,是1972年Isaac Nassi和Ben Shneiderman提出的结构化表示程序的图形。 NS图遵循自顶向下的原则,将问题对象逐步分解为一个个小问题、再继续分解,直到可以使用简单的语句或控制流程图表示为止。 NS图的基本表示形式如图4-3所示。 程序设计语言 程序设计语言表示方式是指采用程序设计语言、类程序设计语言(也称为类语言、伪代码等)等形式表示算法。 用程序设计语言表示的算法实际上就是计算机将要执行的程序。这是计算机领域中算法最完整、最准确、最终的表示方式,也是最复杂的表示方式。 程序设计语言表示的算法虽然最精细,但是却难以进行一般的阅读和交流。 形式化方法 形式化方法是一种描述计算机软件和硬件系统思想的数学方法。 形式化方法主要用于规格说明、设计开发、系统验证等。使用形式化方法的主要好处是可以准确地描述系统或算法的思想,可以满足工程原理验证、执行性能估算、系统可靠性验证等作用。 但是,在程序设计领域采用形式化方法的成本比较高,因此该方法仅适用于要求严格的软件项目中。例如,Petri网、ASM(abstract state machine,抽象状态机)等都是典型的形式化方法。 4.1.4 算法的复杂度分析 为了比较算法的效率,计算机科学领域采用计算复杂度指标来度量算法的难易程度。 计算复杂度表示应用一种算法需要付出多大的努力或成本是多少。 计算成本可以用多种不同的标准衡量,时间成本和空间成本是两个最常用的成本标准。 时间成本是指程序处理数据所耗费的时间度量 空间成本则是指程序处理数据时所耗费的存储空间的度量 在软件应用领域,时间成本往往比空间成本有更多的考虑。 4.1.5 算法的分类 算法有多种分类方式,可以根据实现方式分类,也可以根据设计方法分类,还可以根据应用领域进行分类。不同的分类方式有不同的特点。 按照实现方式分类,可以将算法分为递归算法、迭代算法、逻辑算法、串行算法和并行算法和分布式算法、确定性算法和非确定性算法、精确算法和近似算法等。 如果根据设计方法来分类,可以将算法分为穷举法、分治法、线性规划法、动态规划法、贪心算法、回溯法等。 4.2 递归法 4.2 递归法 递归法是一种思考和解决问题的方式,是计算机科学的核心思想之一。 递归法的主要思想是将一个初始问题分解成为比较小的、有着相同形式的子问题,直到子问题足够简单、能够被理解并解决为止,然后再将所有子问题的解组合起来得到初始问题的结果。 许多高级程序设计语言都提供了支持递归运算的函数。 4.3.1 递归法的特征 递归的特征 为了获得大型问题的解决方案,常用的方法就是把该大型问题化解为一个或几个相似的、规模更低的子问题。对子问题可以采用同样的方法。 这样,一直递归下去,直到子问题足够小,成为一个基本情况,这时可以直接给出子问题的解答。 也就是说,每个递归过程都包含如下两个步骤: (1) 一个能够不使用递归方法可以直接处理的基本情况; (2) 一个常用的方法,能够将一种特殊的情况化解为一种或多种规模较小的情况,持续下去,最终将问题转换为对基本情况的求解。 4.3.2 Hanoi塔 Hanoi塔是一个典型的可以采用递归方法解决的难题。 1883年,法国数学家Edouard Lucas首先提出了Hanoi塔问题。 有关Hanoi塔的描述是这样的:在被认为是世界中心的贝拿勒斯的神庙里,一个黄铜盘上固定了三个宝座,每一个都又高又粗。上帝造万物时,在其中的一个宝座上放了64只纯金圆盘,最大的盘子放在黄铜盘上,然后依次叠放,直到最小盘放在最顶上,这就是梵天塔。住持日夜不停地把这些盘子从一个宝座上移到另外一个宝座上,但他需要遵守一些固定的永远不变的梵天规则,即住持每次只能移动一个盘子,且必须把这个盘子放在一个宝座上而没有更小的盘子在它的下面。当所有的64只盘子都已从上帝造物时所放置的宝座上移到另外的一个宝座上时,塔和庙宇都将坍

文档评论(0)

cnsg + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档