- 1、本文档共176页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 算法与数据结构 程序设计的步骤: 1.了解和研究需要解决的问题,提出适当的计算模型并列出解决问题的方法和步骤 2.模型一旦建立起来,就要选择合适的算法,并将解题步骤表述出来 3.用计算机语言将步骤转化为计算机可以“读懂”的计算机程序,即所谓的“编程” 4.进行测试和修改 本章着重讨论解决问题的核心--算法以及 算法的处理对象--数据的结构 3.1 算法 通常,把解题过程的准确而完整的描述称作解该问题的算法 程序的目的是加工数据,而如何加工数据是算法的问题。程序是数据结构与算法的统一 Niklaus Wirth教授进一步提出了如下有名公式: 程序=算法+数据结构 程序就是在数据的某些特定的表示方式和结构基础上对抽象算法的计算机语言具体表述 从算法的角度,可将程序定义为: 为解决给定问题的计算机语言有穷操作规则的有序集合 一.算法的两要素 一个算法由一些操作组成,而这些操作又是按一定的控制结构所规定的次序执行的 操作 (1) 逻辑运算: “与”、“或”、“非” (2) 算术运算: 加、减、乘、除 (3) 数据比较: 大于、小于、等于、不等于 (4) 数据传送: 输入、输出、赋值 算法的控制结构(三种基本控制结构) (1)顺序 (a.顺序结构) (2)选择 (b.选择结构) (3)循环 (c.直到型循环 d.当型循环) 三种基本控制结构的一般形式 二.算法的特征 算法具有以下几个特征: 有效性 确定性,可行性 足够的信息:一个或多个输出;0个或多个输入 有穷性:执行是可终止的 算法是一个过程,这个过程由一套明确的规则组成,这些规则指定了一个操作的顺序,以便用有限的步骤提供特定类型问题的解答 三.算法的表示 自然语言 专用工具 算法描述语言 自然语言 用自然语言描述算法通俗易懂,但它 存在着难以克服的缺陷: 易产生歧义性 语句比较繁琐冗长,并且很难清楚地表达算法的逻辑流程。如果算法中包含判断、循环处理,尤其是这些处理的嵌套层数增多,自然语言描述其流程既不直观又很难表达清楚 当今的计算机尚不能处理用自然语言表示的算法 专用工具 为了形象地描述算法,人们创造了许多专用工具来描述算法。常用的有流程图、PAD图和N-S图等。除图形工具之外,人们可使用代码符号(如伪代码)描述算法 PAD是问题分析图(Problem Analysis Diagram)的英文缩写,自1973年由日本日立公司发明以来,已经得到一定程度的推广。它用二维数形结构的图表示程序的控制流,将这种图转换为程序代码比较容易 常用流程图符号 N-S图 Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,叫做盒图,也叫做N-S图 PAD图 PAD是Problem Analysis Diagram 的缩写,它是日本日立公司提出,由程序流程图演化来的,用结构化程序设计思想表现程序逻辑结构的图形工具。现在已为ISO认可 算法描述语言 为了便于转换成某种编程语言,一般采用准程序设计语言作算法描述语言。如pascal_like,c_like等类_xxx语言。本书约定一种算法描述语言,这种语言是VB语言的变体,称为类VB语言 类VB语言一览表 类VB语言一览表 四. 常用算法 枚举法 (穷举法) 迭代法 递归法 递推法 分治法 回溯法 枚举法 枚举法亦称穷举法,它的基本思想是:首先依据题目的部分条件确定答案的大致范围,然后在此范围内对所有可能的情况逐一验证,直到全部情况验证完。若某个情况使验证符合题目的条件,则为本题的一个答案;若全部情况验证完后均不符合题目的条件,则本题无答案 枚举法的实质是枚举所有可能的解,用检验条件判断定哪些是有用的,哪些是无用的,而题目往往就是检验条件。枚举法的特点是算法简单,但有时运算量大,对于可确定解的取值范围且又一时找不到其他更好的算法时,就可以用它 枚举法例题 百鸡问题:百元买百鸡 公鸡 5元 母鸡 3元 小鸡 1/3元 x+y+z=100 5x+3y+z/3=100 三层循环嵌套 迭代法 重复同样步骤,可以逐次求得更精确的值。这一过程即为迭代过程 使用迭代法构造算法的基本方法是:首先确定一个合适的迭代公式,选取一个初始近似值以及解的误差,然后用循环处理实现迭代过程,终止循环过程的条件是前后两次得到的近似值之差的绝对值小于或等于预先给定的误差。并认为最后一次迭代得到的近似值为问题的解。这种迭代方法称为逼近迭代 递归法 递归是构造计算机算法的一种基本方法。如果一个过程直接或间接地调用它自身,则称该过程是递归的, 递归过程必须有一个递归终止条
文档评论(0)