收藏 分享(赏)

数据结构精品课件.ppt

上传人:HR专家 文档编号:5462431 上传时间:2019-03-04 格式:PPT 页数:64 大小:2.17MB
下载 相关 举报
数据结构精品课件.ppt_第1页
第1页 / 共64页
数据结构精品课件.ppt_第2页
第2页 / 共64页
数据结构精品课件.ppt_第3页
第3页 / 共64页
数据结构精品课件.ppt_第4页
第4页 / 共64页
数据结构精品课件.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、,数据结构,第1章 绪 论,教研室:信息与计算科学 教师姓名:谢文平,1.1 数据结构的讨论范畴,例 1.1 学生情况登记管理系统。,在这种数据结构中,计算机处理的数据之间存在的是一种 “一个对一个” 的简单线性关系,称为线性数据结构。,例 1.2 Internet 域名查询系统。,在这种数据结构中,计算机处理的数据之间存在的是一种 “一个对多个” 的层次关系,称为树形数据结构。,例 1.3 最小造价通信网络系统。,(a) 7 个城市的通信线路,(b) 最小造价通信线路,在这种数据结构中,计算机处理的数据之间存在的是一种 “多个对多个” 的关系,称为图状数据结构。,数据结构是研究数据的特性及其

2、之间的关系、数据在内存的存储形式,以及对数据进行各种操作的一门课程。重点分析数据之间抽象的相互关系,而不涉及数据的具体内容。,瑞士著名计算机科学家,PASCAL 语言的发明者 Niklaus Wirth 在 1976 年出版的书名。,斗转星移至今,尽管新的技术方法不断涌现 这句名言依然焕发着无限的生命力,它借助 面向对象知识的普及,使数据结构技术更加 完善和易于使用。由此也说明了数据结构在 计算机学科中的地位和不可替代的独特作用,1.2 数据结构的相关概念,例如:一个利用数值分析方法求解代数方程的程序,其处理对象是整数和实数;一个编译程序或文字处理程序的处理对象是字符串;一个影视作品制作程序,

3、其处理对象是声音、图像及视频等。,1.2.1 基本概念和术语, 数据, 数据元素,1.2.1 基本概念和术语,例如:某程序处理的数据是学生信息表,每个学生信息就是一个数据元素,其中学生信息中的每一项(如学号、姓名、性别、出生年月等)是数据元素中的数据项。,例如:在电话号码查询系统中,数据对象是全体的电话用户;在银行业务处理系统中,数据对象是全体储户的资料及全体贷款客户的资料。, 数据对象,1.2.1 基本概念和术语, 数据关系,1.2.1 基本概念和术语,例如:在编写家庭族谱时,数据对象是家庭中的所有成员,对家族中某个成员的描述就是一个数据元素,各个数据元素之间存在着血缘关系;父亲是儿子的前驱

4、,儿子是父亲的后继,小孩子没有后继。,又如:一张按名次排列的成绩表,其数据对象是全班同学,对某个同学属性(姓名、成绩等)描述就是一个数据元素,各数据元素之间存在着名次关系;第一名没有前驱,其后继是第二名,第二名的前驱是其一名,其后继是第三名。,例如:在学生情况登记中,学号和姓名为关键字,其中:学号为主关键字,姓名为次关键字。, 关键字,1.2.1 基本概念和术语,1.2.2 数据结构,1.2.2 数据结构,数据的逻辑结构定义是:设 D 表示数据元素的集合,R 表示 D 上关系的集合(即 R 反映了 D 中各元素的前驱和后继关系),那么一个数据的逻辑结构 B 可以表示为:B=(D, R)。,根据

5、数据元素之间关系的不同特性,数据可有 4 类基本的逻辑结构:集合、线性结构、树形结构、图状结构或网状结构。,1.2.2 数据结构,例 1.4 一周七天数据的逻辑结构。,在此结构中,有 7 个数据元素,有 1 种关系 R。,B=(D,R) D=Sun,Mon,Tue,Wed,Thu,Fri,Sat R=,1.2.2 数据结构,例 1.5 家庭血缘关系数据的逻辑结构。,在此结构中,有 10 个数据元素,每个数据元素包括两个数据项:姓名和年龄。有两个关系:直系血缘关系 R1 和第三代各兄弟年龄大小排列顺序关系 R2。,B=(D,R) D=ai|1i10=a1,a2,a3,a4,a5,a6,a7,a8

6、,a9,a10 R=R1,R2 R1=, R2=,根据在存储器中表示数据关系的不同方法,数据有 4 种存储方式:顺序存储方式、链式存储方式、索引存储方式、哈希存储方式。,1.2.2 数据结构,1.2.2 数据结构,例 1.6 假设一个线性结构有如下逻辑关系,其中,每个数据元素在内存占 1 个字节:B=(D,R)D=A,B,C,D,ER=,1.2.2 数据结构,例 1.7 假设一组数据元素有如下逻辑结构: B=(D,R)D=80,75,90,85,70R=,1.2.2 数据结构,例如:C 语言中整型变量,其值集为某个区间上整数,定义在其上的操作为:加、减、乘、除和取模等算术运算。 按照 “值”

7、的不同特性,高级程序设计语言中的数据类型可以分为两类:原子类型和结构类型。,1.2.3 数据类型和抽象数据类型,1.2.3 数据类型和抽象数据类型,ADT 的定义可用三元组表示:( D, R, P )。其中:D 是数据对象,R 是 D 上的关系集,P 是对 D 的基本操作集,可以采用如下格式描述:,ADT 抽象数据类型名 数据对象D:数据关系R:基本操作P:基本操作名 1:初始条件:操作结果:基本操作名 2:初始条件:操作结果: ADT 抽象数据类型名,1.2.3 数据类型和抽象数据类型,1.3 算法描述与算法分析,1.3.1 基本概念, 算法的重要特性, 算法的设计要求, 描述方法,1.3.

8、2 算法描述, 描述说明,除函数参数需要说明类型外,算法中使用的辅助变量可不作变量说明,必要时对其作用给予注释。为便于算法描述,在函数参数表中除值调用方式外增添了 C+ 的引用调用参数传递方式。,1.3.3 算法分析, 评价算法的标准,(1) 执行算法所耗费的时间; (2) 执行算法所耗费的存储空间,其中主要考虑辅助存储空间; (3) 算法应该易于理解,易于编码,易于调试等等。, 算法性能的选择,(1) 如果该程序使用次数较少,则力求算法简明易懂;(2) 对于反复多次使用的程序,应该尽可能选用快速的算法;(3) 如果待解决的问题数据量极大,机器的存储空间较小,则相应算法应该考虑如何节省空间。,

9、 算法的时间性能分析, 语句频度:语句的执行次数; 每条语句的执行时间:语句频度与语句执行一次所需要时间的乘积; 算法耗费时间:算法中每条语句的执行时间之和。,例1-9 求两个 n 阶方阵的乘积 C=AB, 问题规模和算法时间复杂度, 问题规模:算法求解问题的输入量,一般用一个整数 n 来表示。 时间复杂度:一个算法耗费的时间 T(n),它是算法所求解问题规模 n 的函数。当问题规模 n 趋向无穷大时,时间复杂度 T(n) 的数量级(阶)称为算法的渐进时间复杂度。,例如,当矩阵的阶数n趋向于无穷大时,显然有:,数学符号 “O” 严格的数学定义是:如果 T(n) 和 f(n) 是定义在正整数集合

10、上的两个函数,则 T(n)=O(f(n) 表示存在正的常数 C 和 n0,使得当 nn0 时都满足 0T(n)Cf(n)。, 渐进时间复杂度评价算法时间性能,例1-11 有两个算法 A1 和 A2 求解同一问题,时间复杂度分别是: T1(n)=100n2,T2(n)=5n3,在算法分析时,往往对算法的时间复杂度和渐近时间复杂度不予区分,而经常是将渐近时间复杂度 T(n)=O(f(n) 简称为时间复杂度。如果将算法中频度最大语句称为基本操作,则 f(n) 就是基本操作的频度。因此,算法的时间复杂度取决于算法中基本操作的频度。,例1-12 交换 a 和 b 的内容。,因此,当算法的执行时间不随着问

11、题规模 n 的增加而增长时,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度为 O(1)。,例1-13 变量计数示例一。,因此,对步进循环语句,算法的时间复杂度是由循环体中基本操作执行次数来决定的。,例1-14 变量计数示例二。,因此,当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层基本操作的频度 f(n) 决定的。,例1-15 在数组 A0n-1 中查找给定值 k。,因此,算法的时间复杂度不仅仅依赖与问题规模有关,还与输入实例的初始状态有关。, 最坏时间复杂度和平均时间复杂度, 最坏时间复杂度:最坏情况下的时间复杂度称为最坏时间复杂度。一

12、般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。 平均时间复杂度:在所有可能输入实例均以等概率出现的情况下,算法的期望运行时间称为平均时间复杂度。, 算法的空间复杂度,类似于时间复杂度的讨论,一个算法的空间复杂度定义为该算法所耗费的存储空间 S(n),它也是问题规模n的函数。通常,渐近空间复杂度也简称为空间复杂度。,算法在执行期间所所耗费的存储空间应该包括三个部分:(1) 输入数据所耗费存储空间:只取决于问题本身,和算法无关; (2) 程序代码所耗费存储空间:对不同算法来说不会有数量级差别; (3) 辅助变量所耗费存储空间:随算法不同而异,有的只需占用不随问题规模改变的少量空间,有的

13、则需占用随着问题规模增大而增大的空间。,因此,在求解算法的空间复杂度时,只需要分析算法执行过程中辅助变量所耗费的存储空间。,本 章 学 习 要 点,1、思考题:试编写算法求一元多项式的值,并确定算法中每一语句的执行次数和整个算法的时间复杂度。 方法1:直接计算需n(n+1)/2次乘法. 方法2:Vk =a0+a1x+akxk ,则tk= xtk-1 (令tk =xk); Vk = Vk-1 + aktk (令t0 =1, V0 =a0),共需2n次乘法.void polyvalue() float a,*p;p=a;scanf(“%d”,方法3:秦九韶法Vk = (anx +an-1x ) + an-k+1 )x +an-k , 则Vk = x Vk-1 + an-k(令k =1,2, ,n;V0 =an),共需n次乘法.算法:输入a0 , a1 , +an , x;V =an ;k=1;for(;k=n;k+)v+=x*v+ an-k;输出v; 共需n次乘法.,2、课后作业: P16 1.3, 1.10,1.12 ,1.6(1)(2)(3) 1.13, 1.14,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报