数据结构课件01..ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三、抽象数据类型 (Abstract Data Type 简称ADT) 是指一个数学模型以及定义在此数学模型上的一组操作。 抽象数据类型可以用以下的三元组来表示: ADT = (D,S,P) 数据对象 D上的关系集 D上的操作集 ADT 抽象数据类型名{ 数据对象:数据对象的定义 数据关系:数据关系的定义 基本操作 :基本操作的定义 } ADT 抽象数据类型名 ADT常用定义格式 例如,抽象数据类型复数的定义: 数据对象: D={e1,e2|e1,e2∈RealSet } 数据关系: R1={e1,e2 | e1是复数的实数部分 | e2 是复数的虚数部分 } ADT Complex { 基本操作: AssignComplex( Z, v1, v2 ) 操作结果:构造复数 Z,其实部和虚部 分别被赋以参数 v1 和 v2 的值。 DestroyComplex( Z) 操作结果:复数Z被销毁。 GetReal( Z, realPart ) 初始条件:复数已存在。 操作结果:用realPart返回复数Z的实部值。 GetImag( Z, ImagPart ) 初始条件:复数已存在。 操作结果:用ImagPart返回复数Z的虚部值。 Add( z1,z2, sum ) 初始条件:z1, z2是复数。 操作结果:用sum返回两个复数z1, z2 的 和值。 } ADT Complex 1.4 算法和算法分析 一、算法// 二、算法设计的原则// 三、算法效率的衡量方法和准则 四、算法的存储空间需求 算法(algorithm)—解决某一特定问题的具体步骤的描述,是指令的有限序列。 算法特性 —— 有穷性 一个算法必须在执行有限步骤之后结束 确定性 算法的每一步必须是确切定义的,不能产生二义性 可行性 算法是能行的 输入 一个算法有零个或多个输入 输出 一个算法有一个或多个输出 算法的描述—采用类C语言 算法的评价—衡量算法优劣的标准 正确性(correctness) 可读性(readability) 健壮性(robustness) 效率与低存储量 三、算法效率的衡量方法和准则 一个特定算法的“运行工作量” 的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。 假如,随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同,则可记作: T (n) = O(f(n)) 称T (n) 为算法的(渐近)时间复杂度。 10n2+4n+2=O(n2) 它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。 渐进符号(O)的定义:当且仅当存在一个正的常数 C和n0 ,使得对所有的 n ? n0 ,有 T(n) ? Cf(n),则 T(n) = O(f(n)) 3n+2=O(n) /* 3n+2?4n for n?2 */ 3n+3=O(n) /* 3n+3?4n for n?3 */ 100n+6=O(n) /* 100n+6?101n for n?10 */ 10n2+4n+2=O(n2) /* 10n2+4n+2?11n2 for n?5 */ 6*2n+n2=O(2n) /* 6*2n+n2 ?7*2n for n?4 */ 如何估算 算法的时间复杂度? 从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则。 n * n阶矩阵加法: for( i = 0; i n; i++) for( j = 0; j n; j++) c[i][j] = a[i][j] + b[i][j]; 语句的频度(Frequency Count ): 重复执行的次数:n*n; T( n ) = O ( n 2) 即:矩阵加法的运算量和问题的规模n的平方是同一个量级 变量计数 x = 0; y = 0; for ( int k = 0; k n; k ++ ) x ++; for ( int i = 0; i n; i++ ) for ( int j = 0; j n; j++ )

文档评论(0)

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

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

1亿VIP精品文档

相关文档