当前位置:文档之家› 数据结构第1章

数据结构第1章

example P9
抽象数据类型的表示与实现(看书中P10-13)
20
三、算法的概念和描述:
什么是算法?
所谓算法(Algorithm)是描述计算机 解决给定问题的操作过程(解题方 法),即为解决某一特定问题而由若 干条指令组成的有穷序列。
21
一个算法必须满足以下五个特性:

有穷性
(1)数据元素自身值的表示 (2)该结点与其它结点关系的域
两种基本的存储方法:
(1)顺序存储方法(结构) (2)链接存储方法(链式存储结构) 同一种逻辑结构可采用不同的存储方法,这 主要考虑的是运算方便及算法的时空要求。
14
逻辑结构、存储结构小结:
(1)数据的逻辑结构、存储结构和数据的 运算(算法)构成了数据结构三个方面的 含义。
18
抽象数据类型 是指一个数学模型以及定义在此数学模型上的 一组操作 数据结构+定义在此数据结构上的一组操作 = 抽象数据类型 例如:矩阵 +(求转置、加、乘、 求逆、求特征值) 构成一个矩阵的抽象数据类型
19
抽象数据类型的描述 抽象数据类型可用(D,S,P)三元组表示 其中,D是数据对象,S是D上的关系集,P 是对D的基本操作集。 ADT 抽象数据类型名 { 数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名
(2)程序设计的实质是对实际问题选择一 个好的数据结构,加之设计一个好的算法。 而好的算法在很大程度上取决于描述实际 问题的数据结构。
15
为什么学习数据结构?数据结构是什么?
16
二、抽象数据类型
17
数据类型(data type):在一种程序设计语
言中,变量所具有的数据种类。 例1、 在FORTRAN语言中,变量的数据类 型有整型、实型、和复数型 例2、在C语言中 数据类型:基本类型和构造类型 基本类型:整型、浮点型、字符型 构造类型:数组、结构、联合、指针、枚举 型
算法在执行有穷步后能结束
确定性
可行性
每步定义都是确切、无歧义
每一条运算应足够基本
输入
输出
有0个或多个输入
有一个或多个输出
22
算法的描述和实现
描述---可采用自然语言、数学语言或 约定的符号语言。 实现---必须借助程序设计语言提供的 数据类型及其运算。 本课的描述---采用类C语言。
23
例子: 选择排序 问题:递增排序 解决方案:逐个选择最小数据 算法框架: for ( i = 1; i < =n-1; i++ ) { 从a[i]检查到a[n]; 若最小整数是a[k], 交换a[i]与a[k]; }
24

细化:Select Sort void selectSort ( int a[ ], int n ) { //对n个整数a[1],a[2],…,a[n]按递增顺序排序 for ( int i = 1; i < =n-1; i++ ) { int k = i; //从a[i]查到a[n], 找最小整数, 在a[k] for ( int j = i+1; j <= n; j++ ) if ( a[j] < a[k] ) k = j; a[i]<-> a[k]; //a[i]与a[k]交换值 } }
存储结构(物理结构)----
数据元素及其关系在计算机存储器中的存储方 式。 是逻辑结构用计算机语言的实现,它依赖于计 算机语言。
运算(算法)
11
逻辑结构---划分方法一
(1)线性结构---有且仅有一个开始和一个终端结点,并且 所有结点都最多只有一个直接前趋和一个 后继。 例如:线性表、栈、队列、串 (2)非线性结构---一个结点可能有多个直接前趋和直接 后继。 例如:树、图、多维数组、广义表等。
2. 3. 4.
26
算法效率的衡量
通常有两种衡量效率的方法:
事后统计法
缺点:必须执行程序 其他因素掩盖算法本质
事先分析估算法
27
例如: for(i=1 ;i<=n ;i++ ) for (j=1 ;j<=n; j++) T(n)=O(n3) { c[i][j]=0 ; for(k=1 ;k<=n ; k++) c[i][j]=a[i][k]*b[k][i] ; }
12
逻辑结构---划分方法二
一、集合 结构中的数据元素除了同属于一 种类型外,别无其它关系。 二、线性结构 结构中的数据元素之间存在 一对一的关系。 三、树型结构 结构中的数据元素之间存 在一对多的关系。 四、图状结构或网状结构 结构中的数据元 素之间存在多对多的关系。
13
存储结构
存储结构两方面的内容:
4
为什么要学习数据结构?
什么是程序、软件?
尼古拉斯.沃思(Niklaus Wirth)教授提出:
算法+数据结构=程序
5
一、什么是数据结构
6
例 田径赛的时间安排问题(无向图 的着色问题) :
设有六个比赛项目,规定每个选手至多可
参加三个项目,有五人报名参加比赛 (如下表所示)设计比赛日程表,使得 在尽可能短的时间内完成比赛。
数据结构(C语言版) Data Structure
主讲人: 吴聪聪
Email:teacher_wucongcong@
1
数据结构
主要内容:
1.几种常规的数据结构的学习:线性表,树和 二叉树,图 2.不同数据结构下的排序和查找算法
2
课时安排
3
第一章 绪论

数据结构的研究范畴 抽象数据类型的表示与实现 算法和算法效率的度量
姓 丁 马 张 李 王 名 一 二 三 四 五 项目 1 跳高 标 枪 标 抢 铅 球 跳 远 项目 2 跳 远 铅 球 100 米 200 米 200 米 项目 3 100 米 200 米 跳 高
7
----田径赛的时间安排问题解法
(1)设用如下六个不同的代号代表 不同的项目:
跳高 跳远 标枪 铅球 A B C D 100米 200米 E F
25
算法性能分析与s):首先,算法必须是 “正确”的,可分四个层次。 可读性(readabilty):算法的可读性、易维护性 要好(易于理解,易于编码,易于调试)。 健壮性(robustness):输入数据非法,算法能 做出反应和适当处理。 效率和低存储量需求:执行算法所耗费的时间 (效率 要高)执行算法所耗费的存储空间 (主要考虑辅存空间;低存储要求)。
9
求解非数值计算的问题:
主要考虑的是设计出合适的数据结构
及相应的算法。
即:首先要考虑对相关的各种信息如 何表示、组织和存储? 因此,可以认为:数据结构是一门研 究非数值计算的程序设计问题中计算 机的操作对象以及它们之间的关系和 操作的学科。
10
2、数据结构的三个方面的含义:
逻辑结构---
数据元素间抽象化的相互关系(简称为数据结 构)。 与数据的存储无关,独立于计算机,它是从具 体问题抽象出来的数学模型。
(2)用顶点代表比赛项目
不能同时进行比赛的项目之间连上一条边。
(3)某选手比赛的项目必定有边相 连(不能同时比赛)。
8
姓名 丁一 马二
项目1 A C
项目2 B D
项目3 E
张三
李四 王五
C
D B
E
F F
F
A
只需 安排四 个单位 时间进 行比赛
比赛 时间
比赛项目
A F D
B
E
C
1 2
3 4
A,C B,D E F
30
28
常见函数的时间
复杂度按数量递增排 列及增长率。 常数阶O(1) 对数阶O(log2n) 线性阶O(n) 线性对数阶O(nlog2n) 平方阶O(n2) 立方阶O(n3) …… k次方阶O(nk) 指数阶O(2n)
29
本章小结
数据、数据结构等基本概念 数据结构的三个方面的内容 线性和非线性结构的逻辑特征 数据存储的四种基本方法 了解算法、算法的时间复杂度
相关主题