网站大量收购独家精品文档,联系QQ:2885784924

计算机软与件基础数据结构之算法 .ppt

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

第二章 算法 2.1 算法的两要素 2.2 算法的特征 2.3 算法的表示 2.4 常用算法 2.5 算法的设计要求 2.6 算法的复杂度分析 解决问题一般步骤 实际问题--〉模型--〉算法--〉程序--〉结果 解决问题的核心 -- 算法以及算法的处理对象 -- 数据的结构 程序与算法 何谓算法: 解题过程的准确、完整的描述称作解该问题的算法 何谓程序:就是用计算机语言表述的算法 流程图就是图形化了的算法 程序=算法+数据结构 2.1 算法的两要素 算法由对数据对象的运算和操作与算法的控制结构两要素组成 1.算法中对数据的运算和操作 (1) 逻辑运算: “与”、“或”、“非”; (2) 算术运算: 加、减、乘、除; (3) 数据比较: 大于、小于、等于、不等于; (4) 数据传送: 输入、输出、赋值。 2. 控制结构 算法的控制结构,决定了各操作的执行次序。用流程图 可以形象地表示出算法的控制结构 任何复杂的算法都可以用顺序、选择、循环三种控制结构组合而成 2. 2 算法的基本特征 算法是由一套计算规则组成的一个过程 1.确定性 算法中每一个指令须有明确的含义,不能有二义性 2.可行性 算法中描述的操作都可实现,执行结果能达到预期目标 3.输 出 每种算法必须有确定的结果,产生一个或多个输出 4.输 ?入 每个算法必须有0个(自动生成初始数)或多个输入 5.有穷性 解答必须在有限步内得到,不能出现“死循环” 我们可以得出如下的结论:算法是一个过程,这个过程由一套明确的规则组成,这些规则指定了一个操作的顺序,以便用有限的步骤提供特定类型问题的解答。 2. 3 算法的表示 算法设计一般是由粗到细的过程,一般可以使用下面几种类型的工具描述算法: 1.自然语言 自然语言描述算法通俗易懂,但它有着难以克服的缺陷: (1) 易产生歧义性 (2) 语句繁琐冗长,很难清楚地表达算法的逻辑流程 (3) 当今的计算机尚不能处理用自然语言表示的算法 2.专用工具 常用的有流程图、问题分析(PAD)和NS盒图、伪代码等。 3.算法描述语言 为了便于转换成某种编程语言,一般采用准程序设计语言作算法描述语言。例如,类C语言继续 流程图 是采用不同的几何图形来描述算法的逻辑结构,每个几何图形表示不同性质的操作 1.枚举法(穷举法)(常用) 基本思想是: 先依据题目的部分条件确定答案的大致范围 在此范围内对所有可能的情况逐一验证,直到全部情况验证完 若某个情况使验证符合题目的条件,则为本题的一个答案;若全部情况验证完后均不符合题目的条件,则问题无解 例:百元买百鸡: 公鸡5元、母鸡3元、小鸡1元 2.迭代法 使一个复杂问题的求解过程转化为相对简单的迭代算式的重复执行过程。 基本思想:通过列举少量的特殊情况,经过分析,最后找出一般的关系。 基本方法: 首先确定一个合适的迭代公式,选取一个初始近似值以及解的误差 然后用循环处理实现迭代过程,终止循环过程的条件是前后两次得到的近似值之差的绝对值小于或等于预先给定的误差 并认为最后一次迭代得到的近似值为问题的解。 例:数值计算方法 3.递归法 基本思想:将复杂问题逐层分解,最后归结为一些简单的问题。 如果一个过程直接或间接地调用它自身,则称该过程是递归的 例:输出自然数1到n。 #include “stdio.h” Wrt1(int n) {if (n!=0) {wrt1(n-1);printf(“%d\n”,n);} return:; } 4.递推法 基本思想:从已知的初始条件出发,逐次推出所要求的中间结果和最后结果。(本质上属归纳法) 所谓递推法,它的数学公式也是递归的。只是在实现计算时与递归相反。从给定边界出发逐步迭代到达指定计算参数。 例:求阶乘 f(n)=n! =n×(n-1)! =n×f(n-1) 要计算10!,可以从递推初始条件f(0)=1出发,应用递推公式f(n)=n×f(n-1)逐步求出f(1)、f(2)…、f(9)、最后求出f(10)的值 递推操作是提高递归函数执行效率最有效的方法,科技计算中最常见 5.分治法 解一个复杂的问题时,尽可能地把这个问题分解为较小部分,找出各个的解,然后再把各部分的解组合成整个问题的解,这就是所谓的分治法 分治法的基本步骤 1.分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; 2.解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题; 3.合并:将各个子问题的解合并为原问题的解。 常用于:人工智能、查找、检索 例:将无序的N个元素按递增次序排序(P79) 6

文档评论(0)

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

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

1亿VIP精品文档

相关文档