数据结构课件1-11全书讲第1讲绪论幻灯片.ppt

数据结构课件1-11全书讲第1讲绪论幻灯片.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Mod 前置条件:存在一个整数a 输入:一个整数b 功能:求当前整数与输入整数的模,即正的余数 输出:若整数b为零,则抛出除零异常,否则输出取模的结果 后置条件:整数a的值发生改变 Equal 前置条件:存在一个整数a 输入:一个整数b 功能:判断整数a与输入的整数b是否相等 输出:若相等返回1,否则返回0 后置条件:整数a的值不发生改变 endADT 算 法 算法是为了解决某类问题而规定的一个有限长的操作序列 算法定义 算法应具有的性质 正 确 性 具 体 性 确 定 性 有 限 性 可 读 性 健 壮 性 正确性 正确性指必须完成所期望的功能,对算法是否“正确”的理解可以有如下四个层次: (1)程序中不含任何语法错误。 (2)程序对于几组输入数据能够得出满足要求的结果。 (3)程序对于精心选择的、典型的、苛刻的并带有刁难性的几组输入数据能够得出满足要求的结果。 (4)程序对于一切输入数据都能得出满足要求的结果。 具体性 一个算法必须由一系列具体操作组成,这时的“具体”指的所有操作都必须经过已实现的基本操作有限次来实现,并且所有操作都是可读的、可执行的,每一操作必须在有限时间内完成。 确定性 算法中的所有操作都必须有确切的含义,不能产生歧义,算法的执行者或阅读者都能明确其含义及如何执行。 有限性 对于任意一组合法输入值,在执行有限步骤之后一定能结束,即:算法中的每个步骤都能在有限时间内完成 可读性 算法应具备良好的可读性,这样的算法有利于算法的查错及对算法的理解,一般算法的逻辑必须清楚、结构简单,所有标识符必须具有实际含义,能见名知义。 健壮性 健壮性指当输入数据非法时,算法能作适当的处理并作出反应,而不应死机或输出异常结果 算法描述方法 用自然语言描述算法 用我们日常生活中的自然语言(可以是中文形式,也可以是英文形式)也可以描述算法 用流程图描述算法    一个算法可以用流程图的方式来描述,输入输出、判断、处理分别用不同的框图表示,用箭头表示流程的流向。这是一种描述算法的较好方法,目前在一些高级语言程序设计中仍然采用。也有其他的图形辅助工具 用其它方式描述算法   我们还可以用数学语言或约定的符号语言来描述算法   用C++描述算法    在本课中,我们将采用类C++来描述算法,所有算法的描述都用C++中的函数形式来描述 为表示各种状态信息,定义枚举类型StatusCode供使用,具体声明如下: // 自定义类型 enum StatusCode { SUCCESS, FAIL, UNDER_FLOW, OVER_FLOW,RANGE_ERROR, DUPLICATE_ERROR, NOT_PRESENT, ENTRY_INSERTED, ENTRY_FOUND, VISITED, UNVISITED }; 算法和程序的关系 算法着重体现思路和方法,程序着重体现计算机的实现 程序不一定满足有穷性(死循环),另外,程序中的指令必须是机器可执行的,算法中的指令无此限制 一个算法若用计算机语言来书写,它就可以是一个程序 算法评价标准 时间特性(时间复杂度T(n) ) 空间特性(空间复杂度S(n) ) 一个特定算法的“运行工作量” 的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。 假如,随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同,则可记作: T (n) = O(f(n)) 称T (n) 为算法的(渐近)时间复杂度。 例 矩阵元素之和 template class ElemType ElemType Sum( ElemType a[][MAX_SIZE], int n) // 操作结果: 返回矩阵a中元素之和 { ElemType s = 0; // 暂存和 for (int i = 0; i n; i++) for (int j = 0; j n; j++) s = s + a[i][j]; // 遍历求和 return s; // 返回元素之和 } 基本操作: 加法“+” 时间复杂度: O(n2) 四、算法的存储空间需求 算法的空间复杂度定义为: 表示随着问题规模 n 的增大, 算法运行所需存储量的增长率 与 g(n) 的增长率相同。 S(n) = O(g(n)) 面向对象的概念 面向对象 = 对象+类+继承 对象 由一组属性值和在这组值上的一 组服务

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档