数据结构

25
主主主 主主主 主主主 主主主 主主主主 主主主主

Upload: laurel-morales

Post on 03-Jan-2016

46 views

Category:

Documents


6 download

DESCRIPTION

数据结构. 主讲人:陈玉华. 第 1 章 绪论. 1.1 数据结构概述 1.2 基本概念 1.3 算法描述及分析. 1.1 什么是数据结构. 众所周知,计算机的程序是对数据进行加工处理。在大多数情况下,这些数据并不是无组织的,数据之间往往具有重要的结构关系,这就是数据结构的重要内容。那么,什么是数据结构呢?. 例 1-1 一个大学的学生成绩管理。. 在这种数据结构中,计算机处理的数据之间存在的 是一种 “ 一个对一个 ” 的简单 线性关系,称为线性数据结构。. 计信学院. 物电学院. …. 数学学院. 计算机系. 网络工程. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 数据结构

主讲人:陈玉华主讲人:陈玉华

数据结构数据结构

Page 2: 数据结构

第 1 章 绪论 1.1 1.1 数据结构概述数据结构概述 1.2 1.2 基本概念基本概念 1.3 1.3 算法描述及分析算法描述及分析

Page 3: 数据结构

1.1 1.1 什么是数据结构什么是数据结构

众所周知,计算机的程序是对数据进行加工处众所周知,计算机的程序是对数据进行加工处理。在大多数情况下,这些数据并不是无组理。在大多数情况下,这些数据并不是无组织的,数据之间往往具有重要的结构关系,织的,数据之间往往具有重要的结构关系,这就是数据结构的重要内容。那么,什么是这就是数据结构的重要内容。那么,什么是数据结构呢?数据结构呢?

Page 4: 数据结构

例 例 1-11-1 一个大学的学生成绩管理。一个大学的学生成绩管理。

姓名姓名 学号学号 性别性别 高数高数 英语英语 物理物理

黄雨黄雨 98019801 女女 9898 8787 7979

刘昌刘昌 98029802 男男 8787 8888 6868

张云张云 98039803 男男 7878 6565 6666

马力马力 98049804 男男 7777 8787 9090

………… ………… ………… ………… ………… …………

在这种数据结构中,计算机处理的数据之间存在的在这种数据结构中,计算机处理的数据之间存在的是是一种 “一个对一个” 的简单一种 “一个对一个” 的简单线性关系,称为线性数据结构。线性关系,称为线性数据结构。

Page 5: 数据结构

例 例 1-21-2 一所大学的部门管理。一所大学的部门管理。

计信学院计信学院 物电学院物电学院 …… 数学学院数学学院

计算机系计算机系 网络工程网络工程 教育技术教育技术

教师教师 学生学生

教师教师 11 教师教师 mm

…… …… ……

……

…… ……

在这种数据结构中,计算机处理的数据之间存在的在这种数据结构中,计算机处理的数据之间存在的是是一种 “一个对多个” 的一种 “一个对多个” 的关系,称为树形数据结构。关系,称为树形数据结构。

Page 6: 数据结构

例 例 1-3 1-3 在 在 nn 个城市间建立通信网络,要求在其中任意两个城市间都有直个城市间建立通信网络,要求在其中任意两个城市间都有直接的或间接的通信线路,在已知某些城市之间直接通信线路预算造价接的或间接的通信线路,在已知某些城市之间直接通信线路预算造价的情况下,使网络的造价最低。的情况下,使网络的造价最低。

AA

BB

CC

DD

EE

FF

GG

22 22 11 33

11 2233 44

4411AA

BB

CC

DD

EE

FF

GG

22 22 11

11 22

11

城市间的通信线路城市间的通信线路 最小造价通信线路最小造价通信线路

在这种数据结构中,计算机处理的数据之间存在的在这种数据结构中,计算机处理的数据之间存在的是是一种 “多对多” 的一种 “多对多” 的关系,称为网状(图状)结构。关系,称为网状(图状)结构。

Page 7: 数据结构

简单地说,数据结构是研究非数值计算程简单地说,数据结构是研究非数值计算程序设计问题中数据以及它们之间的逻辑关系序设计问题中数据以及它们之间的逻辑关系和对数据操作的一门课程。重点分析数据之和对数据操作的一门课程。重点分析数据之间抽象的相互关系,而不涉及数据的具体内间抽象的相互关系,而不涉及数据的具体内容。容。

Page 8: 数据结构

1.2 基本概念

1. 1. 数据 数据 (data)(data)

数据是对客观事物的符号表示,在计算机科学数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程中是指所有能输入到计算机中并被计算机程序处理的符号的总称。序处理的符号的总称。

例如,一个利用数值分析方法求解代数方程的程序,其处理对象是整数和实数;一个编译程序或文字处理程序的处理对象是字符串。对计算机科学而言,数据的含义极为广泛,如图形、图像、色彩、声音等都可以通过编码而归之于数据的范畴。

Page 9: 数据结构

2. 2. 数据元素 数据元素 (data element)(data element)

数据元素 是数据的基本单位,也称为结点,在数据元素 是数据的基本单位,也称为结点,在计算机程序中通常作为一个整体进行考虑和计算机程序中通常作为一个整体进行考虑和处理。有时,一个数据元素可以由若干个数处理。有时,一个数据元素可以由若干个数据项 据项 (data item) (data item) 组成。组成。

例如,某程序处理的数据是学生信息表,每个学生的信息就是一个数据元素,其中的姓名、性别、年龄等是这个数据元素中的数据项。数据项是数据处理中的最小单位。

Page 10: 数据结构

3. 3. 数据对象 数据对象 (data object)(data object)

数据对象是数据对象是性质相同性质相同的数据元素的集合,是数据的的数据元素的集合,是数据的一个子集。一个子集。

例如: 整数数据对象是集合 N = { 0 , 1 , 2 ,… } ;字母字符的数据对象是集合 C = { 'A' , 'B' ,… } 。

Page 11: 数据结构

4. 4. 数据的逻辑结构 数据的逻辑结构 (data logical structure)(data logical structure)

数据的逻辑结构反映的是数据元素之间的逻辑数据的逻辑结构反映的是数据元素之间的逻辑(数学)关系,并不依赖于计算机。(数学)关系,并不依赖于计算机。

(1) 集合:结构中的数据元素之间除了 “同属于一个集合” 外,别无其他的关系。

Page 12: 数据结构

(2) 线性结构:结构中的数据元素之间存在着一个对一个的关系。

Page 13: 数据结构

(3) 树型结构:结构中的数据元素之间存在着一个对多个的关系。

Page 14: 数据结构

(4) 图状结构或网状结构:结构中的数据元素之间存在着多个对多个的关系。

5

20

12

9

5512

813

Page 15: 数据结构

5. 5. 数据的存储结构 数据的存储结构 (data memory structure)(data memory structure)

数据的存储结构 数据的存储结构 ( ( 或称物理结构 或称物理结构 ) ) 是数据在是数据在计算机存储器中的表示,包括数据的存储方计算机存储器中的表示,包括数据的存储方式及数据之间的逻辑关系。数据的物理结构式及数据之间的逻辑关系。数据的物理结构是依赖于计算机的。是依赖于计算机的。

(1) 顺序存储结构: 逻辑上相邻的数据元素在存储器中也相邻。

Page 16: 数据结构

(2) 链式存储结构: 逻辑上相邻的数据元素在存储器中不一定

相邻,但存储每个元素时都附加了指针(地址)字段,通过设置指针使不相邻存储的元素有了相邻的逻辑关系

Page 17: 数据结构

6. 6. 数据数据结构 结构 (data structure)(data structure)

数据结构数据结构是带有结构特性的数据元素集合,研是带有结构特性的数据元素集合,研究的是数据的逻辑结构和数据的存储结构以究的是数据的逻辑结构和数据的存储结构以及它们之间的相互关系,并对这种结构定义及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,而且确相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结构仍然是原保经过这些运算后所得到的新结构仍然是原来的结构类型。来的结构类型。

Page 18: 数据结构

1.3 算法 描述及分析算法 描述及分析

算法算法 (algorithm)(algorithm) 是对特定问题求解步骤的一种描是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表述,它是指令的有限序列,其中每一条指令表示一个或者多个操作。算法设计依赖于数据的示一个或者多个操作。算法设计依赖于数据的存储结构,因此对确定的问题,人们寻求在适存储结构,因此对确定的问题,人们寻求在适宜的存储结构上设计一种效率较高的算法。宜的存储结构上设计一种效率较高的算法。

Page 19: 数据结构

1. 1. 算法的重要特性算法的重要特性(1) 有穷性:必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都可以在有穷时间内完成。

(2) 确定性:每一条指令必须有确定的含义,读者理解时不会产生二义性,且在任何条件下,只有唯一的执行路径,即对于相同的输入只能得出相同的输出。

(3) 可行性: 算法中描述的操作都是可以通过已实现的基

本运算执行有限次来实现的。(4) 有输入:零个或多个输入,输入取自于特定对象的集

合。(5) 有输出:一个或多个输出,输出是与输入有特定关系

的量。

Page 20: 数据结构

2. 2. 算法的设计要求算法的设计要求

(1) 正确性 (correctness) 。算法应满足具体问题需求,设计或选择的算法应能正确反映这种需求。

(2) 可读性 (readability) 。算法主要是为了人的阅读及人与人之间的交流,其次才是机器执行。可读性好有助于人对算法的理解,晦涩难懂的程序易于隐藏较多错误难以调试和修改。

(3) 健壮性 (robustness) 。当输入数据非法时,算法也能适当地作出反应或处理,而不会产生莫名其妙的输出结果。

(4) 高效率与低存储 (high efficiency and low memory) 。效率指的是算法执行时间。一个问题若有多个算法可解决,则执行时间短的算法效率高。存储量需求指的是算法执行过程中所需的最大存储空间。

Page 21: 数据结构

3. 3. 算法性能评价算法性能评价 (( 算法效率的度量算法效率的度量 ))

评价一个程序优劣的重要依据是看这个程序的执行需要占用多少机器资源。在各种机器资源中,最重要的是时间资源和空间资源。因此,在进行程序分析时,大家最关心的就是程序所用算法在运行时所要花费的时间代价和程序中使用的数据结构所占有的空间代价。通常就称之为时间复杂度(时间代价)和空间复杂度(空间代价)。

Page 22: 数据结构

( 1 )算法的时间复杂度

一个算法由控制结构(顺序、分支和循环)和原操作(固有数据类型的操作)构成,则算法时间取决于两者的综合效果。为了便于比较同一问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是 “基本操作” 的原操作,以该 “基本操作” 重复执行的次数作为算法运行时间的度量。

在一般情况下,算法在一般情况下,算法中 “基本操作” 重复执行的次数是问题规模 中 “基本操作” 重复执行的次数是问题规模 nn

的某个函数 的某个函数 f f ((nn)) ,算法的时间度量记作:,算法的时间度量记作: T T ((nn) = ) = O O ( ( ff ( (nn) )) )

此式表示随着时间规模 此式表示随着时间规模 nn 的增大,算法执行时间的增长率的增大,算法执行时间的增长率和 和 f f ((nn) ) 的增长率相同,所以 的增长率相同,所以 TT((nn) ) 称作算法的时间复杂度 称作算法的时间复杂度 (time co(time co

mplexity)mplexity) 。。 由于算法时间复杂度分析只考虑相对于问题规模 由于算法时间复杂度分析只考虑相对于问题规模 nn 的增长的增长率,因而在难以精确计算基本操作执行次数的情况下,只要求出它关于 率,因而在难以精确计算基本操作执行次数的情况下,只要求出它关于 nn 的增长率即可。我们可以在计算任何算法运行时间代价的时候,忽的增长率即可。我们可以在计算任何算法运行时间代价的时候,忽略所有的常数和低次项,用大 略所有的常数和低次项,用大 OO 表示法来表示算法的时间复杂度。表示法来表示算法的时间复杂度。

Page 23: 数据结构

3. 3. 算法效率的度量算法效率的度量

例如:在下列三个程序段中例如:在下列三个程序段中

① ① { ++x; s = 0; }{ ++x; s = 0; }

② ② for ( i = 1; i <= n; ++i ) {for ( i = 1; i <= n; ++i ) {

++x;++x;

s += x;s += x;

}}

③ ③ for ( j = 1; j <= n; ++j )for ( j = 1; j <= n; ++j )

for ( k = 1; k <= n; ++k ) {for ( k = 1; k <= n; ++k ) {

++x;++x;

s += x;s += x;

}}

含基本操作“ x 增 1” 的语句的重复次数分别为 1 、 n

和 n2 ,则这三个程序段的时间复杂度分别为 O (1) 、 O (n) 和 O (n2) 。

Page 24: 数据结构

通常有如下的函数关系排序: c< log2 n< n< n log2n< n2< n3< 2n

其中, c 是与 n 无关的任意常数。上述函数排序与数学中对无穷大的分级完全一致,因为考虑的也是 n 值变化过程中的趋势。

按数量级将常见的时间复杂度递增排序,依次为:常数阶O(1) 、对数阶O(log2n) 、线性阶O(n) 、线性对数阶O(nlog2n) 、平方阶O(n2) 、立方阶O(n3) 、…、指数阶 (2n) 等。参见下图。

Page 25: 数据结构