- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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只盘子都已从上帝造物时所放置的宝座上移到另外的一个宝座上时,塔和庙宇都将坍
您可能关注的文档
最近下载
- 人教版语文课文同步写字表生字表每日打卡丨一年级(下册).pdf
- 沥滘三期污水处理厂 总平面布置图-布局1.pdf VIP
- 麦肯锡-2024年全球关键并购趋势报告(英译中).pdf
- 人教版小学古诗文汇总(1至6年级).pdf VIP
- 发展与教育心理学题库.doc VIP
- 云算力租赁合同.docx VIP
- 2023年高考数学解析几何模型 圆锥曲线中的范围与最值问题(解析版).pdf VIP
- 2023年高考数学热点解析几何模型通关圆锥曲线中的定点问题(解析版).pdf VIP
- 临近高压输电线路作业审批表.docx VIP
- 2022年内蒙古锡林郭勒正蓝旗总工会招聘社会化工会工作者考试备考试题及答案解析.docx VIP
文档评论(0)