数据结构chap1精要.pptVIP

  • 2
  • 0
  • 约2.54千字
  • 约 62页
  • 2017-04-21 发布于湖北
  • 举报
数据结构chap1精要

第一章 ;软件开发的过程:;Niklaus Emil Wirth 尼克莱斯·沃思 -----瑞士计算机科学家 《Algorithm + Data Structures = Programs》;例如:;例一 求一组(n个)整数中的最大值;概括地说,; 设有一个电话号码薄,它记录了N个部门的名字和其相应的电话号码,假定按如下形式安排: (a1,b1)(a2,b2)…(an,bn) 其中ai,bi(i=1,2…n) 分别表示某部门的名字和对应的电话号码要求设计一个算法。当给定任何一个部门的名字时,该算法能够打印出对应的电话号码,如果该电话簿中根本就没有这个部门,则该算法也能够报告没有这个部门的标志。;这个问题是一种典型的表格问题。例如表1,数据与数据成简单的一对一的线性关系。;例2 磁盘目录文件;例3 交通网络图;1.2 与数据结构相关的概念; 一个数据元素可由若干个数据项(Data Item)组成。数据项是数据的不可分割的最小单位。;关键字;例如,可用三个 4 位的十进制数表示一个含 12 位数的“长整数” 。;又如,在 2 行 3 列的二维数组中六个元素 {a1, a2, a3, a4, a5, a6} 之间存在着两个关系:; 在含 6 个数据元素{a1, a2, a3, a4, a5, a6} 的集合上存在如下的次序关系:;班主任;1.2.2 数据结构;线性结构:结构中的数据元素之间存在一对一的关系。;存储结构是逻辑结构在存储器中的映象,包括;元素之间的“关系” 的两种映象方法:;以附加信息(指针)表示后继关系;存储结构的描述方法随编程环境的不同而不同,当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。;定义“学生”为: typedef struct { char id[8]; // 学号 char name[16]; // 姓名 char sex; // 性别‘M/F’:男/女 DateType bdate; // 出生日期 } Student; // 学生类型;数据结构的三个组成部分:;我们将要讨论三种逻辑结构及其采用的存储结构;何谓“数据类型”?;对程序员而言,各种语言中的整数类型都是一样的,因为它们的数学特性相同。;抽象数据类型有两个重要特征:;抽象数据类型的形式化定义是三元组;③从一个数据结构中删除(Delete)一个数据元素;ADT 抽象数据类型名 { 数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名;赋值参数 只为操作提供输入值; 引用参数 以打头,除可提供输入值外,还将 返回操作结果。;例如,抽象数据类型“复数”的定义:;基本操作:; GetImag( Z, ImagPart ) 初始条件:复数已存在。 操作结果:用ImagPart 返回复数 Z 的虚部值。;抽象数据类型的表示和实现;// 基本操作的函数原型说明;// 基本操作的实现;一个算法必须满足以下五个重要特性:;5.有输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。这种确定关系即为算法的功能。;评价一个好的算法有以下几个标准:;正确性(Correctness ) ; 通常以第 c 层意义的正确性作为衡量一个算法是否合格的标准。;可读性(Readability) ;健壮性(Robustness) ;高效率与低存储量需求;算法执行时间,需要依据该算法编制的程序在计算机上运行所消耗的时间来度量。 通常有两种衡量算法效率的方法:;与算法执行时间相关的因素:;一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,算法的时间量度记作;算法 = 控制结构 + 原操作 (固有数据类型的操作); 从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则。;三重循环,每个循环从1到n,则总次数为: n×n×n=n3  所以,时间复杂度为T(n)=O(n3);语句频度为:2n 其时间复杂度为:O(n) 即时间复杂度为线性阶。;时间复杂度为:O(n2) 即时间复杂度为平方阶。;一个算法时间为O(1)的算法,它的基本

文档评论(0)

1亿VIP精品文档

相关文档