数据的逻辑结构、存储结构及运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计算法
编写代码
数值问题 非数值问题
数学方程式 设计合理的数据结构(表、树、图等)
数据结构是一门研究非数值计算程序设计问题中的操作对象,以及 它们之间的关系和操作等相关问题的学科。
数据结构的3种基本结构---线性结构
线性结构
实例:学生信息管理系统
数据结构的3种基本结构---树结构
树结构
实例:八皇后问题
链式存储:不要求逻辑上相邻的结点物理上也相 邻,结点间的逻辑关系是由附加的指针字段表示 的,在java中使用“对象引用”来实现指针。
1.3 数据结构的研究内容---存储结构
顺序存储结构
链式存储结构
1.3 数据结构的研究内容---存储结构
h
1345
h
链式存储
元素1 1400 元素2 1536 元素3 1346 元素4 ∧
1.3 数据结构的研究内容
•逻辑结构:数据元素之间的逻辑关系。 •存储结构:数据元素及其关系在计算机存储器内的表示。 •数据的运算:即对数据施加的操作。
1.3 数据结构的研究内容---逻辑结构
四种基本数据结构关系图
1.3 数据结构的研究内容---存储结构
数据的存储结构
顺序存储:逻辑上相邻的结点存储在物理位置上相邻 的存储单元里,结点间的逻辑关系由存储单元的邻接关 系来体现.借助于语言的数组来实现。
模块1 概述
学习目的与要求
重点:
•理解数据结构的各种基本概念和术语 •理解线性结构、层次结构和网状结构的结构特点 •理解数据的逻辑结构、存储结构及运算三方面的概念及相互关系
难点:
•掌握算法性能(时间和空间)的分析方法。
源自文库
1.1 什么是数据结构 程序设计的过程,一般遵循以下解决步骤:
分析问题
建立数学模型
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据元素(Data Element)
数据元素是组成数据的基本单位,是计算机程序加工处理的基本单位,在计算机中通常 作为一个整体进行考虑和处理。
数据项(Data Item)
数据项(Data Item)是有独立含义的最小单位。一个数据元素可由一个或多个数据 项组成,此时的数据元素通常称为记录(Record)。 例如:表1.1所示,学生信息表是数据,一行表示一个学生的记录,每一条记录就是一个数据 元素,每一个数据元素都是由学号、姓名、性别、出生日期、政治面貌5个数据项组成。
的不同进行划分的。在高级语言中,每个变量、常量和表达式都有各自的取值范围。 类型就用来说明变量或表达式的取值范围和所能进行的操作。
按“值”是否可分解,可将数据类型划分为两类: (1)原子类型:其值不可分解。通常是由语言直接提供。
如JAVA语言的整型、实型、字符型等基本类型; (2)结构类型:其值可分解为若干个成分(或称为分量)。是用户借助于语言提 供的描述机制自己定义的,它通常是由标准类型派生的,故它也是一种导出类型。如 JAVA语言的数组。
1.5 算法与性能分析---算法的特性
算法的特性
(1)有穷性:有限步骤之内正常结束,不能形成无穷循环,并且每一步骤在可接 受的时间内完成。这里的有穷的概念并不是纯数学意义的,而是在实际应用当 中合理的、可以接受的“有边界”。
(2)确定性:算法中的每一个步骤必须有确定含义,无二义性。 (3)输入:有多个或0个输入。 (4)输出:至少有一个或多个输出。 (5)可行性:算法的每一步操作可通过已经实现的基本运算执行有限次而完成。
1.5 算法与性能分析---算法的设计要求
算法的设计要求
1.正确性 程序中不含语法错误、算法的执行结果应当满足预先规定的功能和性能要求。
2.可读性 一个好的算法首先应该便于人们理解和相互交流,其次才是机器可执行。可读 性好的算法有助于人对算法的理解,难懂的算法易于隐藏错误且难于调试和修 改。
3.健壮性 一个好的算法,当输入的数据非法时,也能适当地做出正确反应或进行相应的 处理,而不会产生一些莫名其妙的输出结果。
据和操作封装在一起,使得用户程序只能通过在ADT里定义的某些操作来访问其中的 数据,从而实现了信息隐藏。在JAVA中,我们可以用类的说明来表示ADT,用类的 实现来实现ADT。因此,JAVA中实现的类相当于是数据的存储结构及其在存储结构 上实现的对数据的操作。
ADT和类的概念实际上反映了程序或软件设计的两层抽象:ADT相当于是在概 念层(或称为抽象层)上描述问题,而类相当于是在实现层上描述问题。此外, JAVA中的类只是一个由用户定义的普通类型,可用它来定义变量(称为对象或类的 实例)。因此,在JAVA中,最终是通过操作对象来解决实际问题的,所以我们可将 该层次看作是应用层。例如,main程序就可看作是用户的应用程序。
4.高效率和低存储量 最后,好的算法还应该具备时间效率高和存储量低的特点。 时间效率指的是算法的执行时间,对于一个具体的问题的解决通常可以有多个 算法,对于执行时间短的算法其效率就高。存储量需求指的是算法在执行过程 中所需要的最大存储空间。这两者都与问题的规模有关。
数据结构的3种基本结构---图结构
图结构
实例:田径赛的时间安排问题
1.2 数据结构的相关概念和术语
数据(Data)
数据是计算机可以操作的对象,是能被计算机识别并处理的描述客观事物的符号 集合。数据不仅仅包括整数、实数等数值类型,也包括字符、文字、图形图像、视频、 声音等非数值类型。
数据的三个层次 数据对象(Data Object)
1.4 数据类型与抽象数据类型
抽象数据类型(Abstract Data Type简称ADT) 抽象数据类型是指一个数学模型及定义在该模型上的一组操作。 抽象数据类型可以看作是数据的逻辑结构及其在逻辑结构上定义的操作,而与其
在计算机内部如何表示和实现无关。 抽象数据类型可以看作是描述问题的模型,它独立于具体实现。它的优点是将数
存储地址 1345 1346 ……. 1400 ……. 1536
存储内容 元素1 元素4
…….. 元素2
…….. 元素3
指针 1400 ∧ ……. 1536 ……. 1346
1.4 数据类型与抽象数据类型
数据类型(Data Type) 数据类型是指一组性质相同的值的集合以及在此集合上定义的一组操作的总称。 通常数据类型可以看作是程序设计语言中已实现的数据结构。数据类型是按照值
相关文档
最新文档