收藏 分享(赏)

大学数据结构PPT课件..ppt

上传人:Facebook 文档编号:3809841 上传时间:2018-11-19 格式:PPT 页数:56 大小:929.50KB
下载 相关 举报
大学数据结构PPT课件..ppt_第1页
第1页 / 共56页
大学数据结构PPT课件..ppt_第2页
第2页 / 共56页
大学数据结构PPT课件..ppt_第3页
第3页 / 共56页
大学数据结构PPT课件..ppt_第4页
第4页 / 共56页
大学数据结构PPT课件..ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、北京林业大学信息学院,13:18,Office: 西配楼218(数字媒体教研室) Email: ,杨猛,数据结构,北京林业大学信息学院,13:18,编程基础 计算机及相关专业考研考博课程 计算机等级考试课程 程序员考试课程,为什么要学习数据结构,北京林业大学信息学院,13:18,课程学习指导,1.提前预习、认真听课、按时完成书面及上机作业 2.注意先修课程的知识准备 离散数学、C语言 3.注意循序渐进: 基本概念、基本思想、基本步骤、算法设计 4.注意培养算法设计的能力 理解所讲算法、对此多做思考:若问题要求不同,应如何选择数据结构,设计有效的算法,课程特点:内容抽象、概念性强、内容灵活、不易

2、掌握,北京林业大学信息学院,13:18,平时成绩 : 30% 作业、小测验、实验 课堂纪律 无故迟到: 无故旷课: 上机:玩游戏、上网聊天 其他违纪情况 期末成绩 : 70%(闭卷笔试),考核方式,北京林业大学信息学院,13:18,教材和参考书 教材: 数据结构严蔚敏,李冬梅,人民邮电出版社 参考书: 数据结构,严蔚敏,清华大学出版社 数据结构用面向对象方法与C+描述,殷人昆等,清华大学出版社 算法艺术与信息学竞赛,刘汝佳,黄亮清华大学出版社,北京林业大学信息学院,13:18,第1章 绪论,1. 了解数据结构研究的主要内容 2.掌握数据结构中涉及的基本概念 3. 掌握算法、算法的时间复杂度及其

3、分析的简易方法,教学目标,北京林业大学信息学院,13:18,1.1 数据结构的研究内容 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法与算法分析,教学内容,北京林业大学信息学院,13:18,N.沃思(Niklaus Wirth)教授提出: (世界著名计算机科学家、图灵奖获得者、PASCAL之父、瑞士苏黎世联邦工业大学)程序 = 算法 + 数据结构 电子计算机的主要用途: 早期:主要用于数值计算 后来:处理逐渐扩大到非数值计算领域,能处理多种复杂的具有一定结构关系的数据,1.1 数据结构的研究内容,北京林业大学信息学院,13:18,书目自动检索系统 http:/ (roo

4、t),bin,lib,user,etc,math,ds,sw,yin,tao,xie,Stack.cpp,Queue.cpp,Tree.cpp,文件系统的系统结构图,北京林业大学信息学院,13:18,多叉路口交通灯管理问题,顶点:一条通路 连线:不能同时通行 染色:有连线的两个顶点不能具有相同颜色,北京林业大学信息学院,13:18,求解非数值计算的问题:设计出合适的数据结构及相应的算法 即:首先要考虑对相关的各种信息如何表示、组织和存储?数据结构的研究内容为: 研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。,北京林业大学信息学院,13:18,数据结构课程的形成和发展:

5、 形成阶段: 60年代初期,“数据结构”有关的内容散见于操作系统、编译原理和表处理语言等课程。1968年,“数据结构”被列入美国一些大学计算机科学系的教学计划。 发展阶段: 数据结构的概念不断扩充,包括了网络、集合代数论、关系等“离散数学结构”的内容。 70年代后期,我国高校陆续开设该课程。,北京林业大学信息学院,13:18,数据结构所处的地位:,介于数学、计算机硬件和计算机软件三者之间的一门核心课程,核心课程之一,北京林业大学信息学院,13:18,课程目的,能够分析研究计算机加工的对象的特性,获得其逻辑结构,根据需求,选择合适存贮结构及其相应的算法; 学习一些常用的算法; 复杂程序设计的训练

6、过程,要求编写的程序结构清楚和正确易读; 初步掌握算法的时间分析和空间分析技术,北京林业大学信息学院,13:18,1、数据(data)所有能输入到计算机中去的描述客观事物的符号 数值性数据 非数值性数据(多媒体信息处理) 2、数据元素(data element)数据的基本单位,也称结点(node)或记录(record) 3、数据项(data item)有独立含义的数据最小单位,也称域(field),三者之间的关系:数据 数据元素 数据项,例:学生表 个人记录 学号、姓名,1.2 基本概念和术语,北京林业大学信息学院,13:18,整数数据对象 N = 0, 1, 2, 学生数据对象 学生记录的集

7、合,4、数据对象(Data Object):相同特性数据元素的集合,是数据的一个子集,北京林业大学信息学院,13:18,5、数据结构(Data Structure)是相互之间存在一种或多种特定关系的数据元素的集合。,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。,北京林业大学信息学院,13:18,数据结构的两个层次: 逻辑结构- 数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。 存储结构(物理结构)- 数据元素及其关系在计算机存储器中的存储方式。,北京林业大学信息学院,13:18,划分方法一 (1)线性结构- 有且仅有

8、一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个后继。 例如:线性表、栈、队列、串 (2)非线性结构- 一个结点可能有多个直接前趋和直接后继。 例如:树、图,逻辑结构,北京林业大学信息学院,13:18,线性结构一个对一个,如线性表、栈、队列,树形结构一个对多个,如树,集合数据元素间除“同属于一个集合”外,无其它关系,图形结构多个对多个,如图,逻辑结构,划分方法二,北京林业大学信息学院,13:18,存储结构分为: 顺序存储结构借助元素在存储器中的相对位置来表示数据元素间的逻辑关系 链式存储结构借助指示元素存储地址的指针表示数据元素间的逻辑关系,存储结构,北京林业大学信息学院,13

9、:18,北京林业大学信息学院,13:18,1536,元素2,1400,元素1,1346,元素3,元素4,1345,h,链式存储,h,北京林业大学信息学院,13:18,数据结构的两个层次: 数据的逻辑结构和物理结构是密切相关的 通常,算法设计取决于逻辑结构; 算法实现依赖于其存储结构。,北京林业大学信息学院,13:18,逻辑结构和存储结构都相同, 但运算不同, 则数据结构不同. 例如, 栈与队列 对于一种数据结构, 常见的运算 插入 删除 修改 查找 排序,数据的运算,北京林业大学信息学院,13:18,数据的逻辑结构,数据的存储结构,数据的运算:插入、删除、修改、查找、排序,线性结构,非线性结构

10、,顺序存储,链式存储,线性表,栈、队列,串、数组,树形结构,图形结构,逻辑结构 唯一存储结构 不唯一运算的实现 依赖于 存储结构,北京林业大学信息学院,13:18,定义:在一种程序设计语言中,变量所具有的数据种类,数据类型,FORTRAN语言:整型、实型、和复数型 C语言:基本数据类型: char int float double void构造数据类型:数组、结构体、共用体、文件,数据类型是一组性质相同的值的集合, 以及定义于这个集合上的一组运算的总称,北京林业大学信息学院,13:18,抽象数据类型 (ADTs: Abstract Data Types),更高层次的数据抽象 由用户定义,用以表

11、示应用问题的数据模型 由基本的数据类型组成, 并包括一组相关的操作 取决于逻辑特性,与内部结构无关,抽象数据类型,北京林业大学信息学院,13:18,抽象数据类型可以用以下的三元组来表示:ADT = (D,S,P)数据对象 D上的关系集 D上的操作集,ADT抽象数据类型名 数据对象:数据关系: 基本操作 : ADT抽象数据类型名,ADT常用定义格式,北京林业大学信息学院,13:18,抽象数据类型,查找 插入 删除 修改,线性表,接口或用户界面,数据类型的物理实现封装,信息隐蔽和数据封装,使用与实现相分离,北京林业大学信息学院,13:18,1.3 抽象数据类型的表示与实现,抽象数据类型可以通过固有

12、的数据类型(如整型、实型、字符型等)来表示和实现。,它有些类似C语言中的结构(struct)类型,但增加了相关的操作 教材中用的是类C语言(介于伪码和C语言之间)作为描述工具,但上机时要用具体语言实现,如C或C+等,北京林业大学信息学院,13:18,(1) 预定义常量及类型 /函数结果状态代码 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 / Status是函数返回值类型,其值是函数结果状态代码 typedef int Status;,北京林业大学信息学院,13:18,(2)数据元素被约定为Elem

13、Type 类型,用户需要根据具体情况,自行定义该数据类型。,(3)算法描述为以下的函数形式:函数类型 函数名(函数参数表)语句序列;,北京林业大学信息学院,13:18,(4)内存的动态分配与释放 使用new和delete动态分配和释放内存空间 分配空间 指针变量=new数据类型; 释放空间 delete指针变量;,(5)赋值语句 “=” (6)选择语句 “if”、“switch” (7)循环语句 “for”、“while”、“do-while”,北京林业大学信息学院,13:18,(8)使用的结束语句形式有: 函数结束语句 return 循环结束语句 break; 异常结束语句 exit(异常代

14、码);,北京林业大学信息学院,13:18,(9)输入输出语句形式有: 输入语句 cin (scanf( ) 输出语句 cout (printf( )(10)扩展函数有: 求最大值 max 求最小值 min(11)逻辑运算有: 与: & 或: | 非: ,北京林业大学信息学院,13:18,算法定义:一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列算法的描述:自然语言流程图程序设计语言伪码,1.4 算法和算法分析,北京林业大学信息学院,13:18,算法的特性:输入 有0个或多个输入输出 有一个或多个输出(处理结果)确定性 每步定义都是确切、无歧义的有穷性 算法应在执行有穷步后结束有效

15、性 每一条运算应足够基本,北京林业大学信息学院,13:18,算法的评价,正确性 可读性 健壮性 高效性(时间代价和空间代价),北京林业大学信息学院,13:18,算法效率:用依据该算法编制的程序在计算机上执行所消耗的时间来度量,算法效率的度量,事后统计 事前分析估计,北京林业大学信息学院,13:18,1.事后统计:利用计算机内的计时功能,不同算法的程序可以用一组或多组相同的统计数据区分,缺点: 必须先运行依据算法编制的程序 所得时间统计量依赖于硬件、软件等环境因素,掩盖算法本身的优劣,北京林业大学信息学院,13:18,2.事前分析估计: 一个高级语言程序在计算机上运行所消耗的时间取决于:依据的算

16、法选用何种策略问题的规模程序语言编译程序产生机器代码质量机器执行指令速度,同一个算法用不同的语言、不同的编译程序、在不同的计算机上运行,效率均不同,使用绝对时间单位衡量算法效率不合适,北京林业大学信息学院,13:18,算法中关键操作(循环和递归)重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作: T(n)=O(f(n),时间复杂度的渐进表示法,渐进符号(O)的定义:当且仅当存在一个正的常数 C和n0 ,使得对所有的 n n0 ,有 T(n) Cf(n),则 T(n) = O(f(n),表示随着n的增大,算法执行的时间的增长率和f(n)的增长率相同,称渐近时间复杂度。,北京林业大

17、学信息学院,13:18,n * n阶矩阵加法: for(int i = 0; i n; i+)for(int j = 0; j n; j+)cij = aij + bij; 语句的频度(Frequency Count ): 重复执行的次数:n*n; T( n ) = O ( n 2) 即:矩阵加法的运算量和问题的规模n的平方是同一个量级,北京林业大学信息学院,13:18,变量计数,x = 0; y = 0; for ( int k = 0; k n; k + )x +; for ( int i = 0; i n; i+ )for ( int j = 0; j n; j+ )y +;,T1(n)

18、 = O(1),T2(n) = O(n),T3(n) = O(n2),T(n) = T1(n)+T2(n)+T3(n) = O( max( 1, n, n2 ) )= O(n2),北京林业大学信息学院,13:18,void exam ( float x , int m, int n ) float sum ;for ( int i = 0; i m; i+ ) /x中各行sumi = 0.0; /数据累加for ( int j = 0; j n; j+ ) sumi += xij; /关键操作for ( i = 0; i m; i+ ) /打印各行数据和cout i “ : ” sum i e

19、ndl; /关键操作,渐进时间复杂度为 O(max (m*n, m),算法的时间复杂度是由嵌套最深层语句的频度决定的,北京林业大学信息学院,13:18,例1:NN矩阵相乘 for(i=1;i=n;i+)for(j=1;j=n;j+)cij=0; for(k=1;k=n;k+)cij=cij+aik*bkj;,算法中的基本操作语句为cij=cij+aik*bkj;,北京林业大学信息学院,13:18,例2: for( i=1; i=n; i+) for (j=1; j=i; j+) for (k=1; k=j; k+)x=x+1;,语句频度 =,北京林业大学信息学院,13:18,例3:分析以下程序

20、段的时间复杂度,i=1; while(i=n)i=i*2; ,即f(n)log2n,取最大值f(n)=log2n,所以该程序段的时间复杂度T(n) =O( log2n),北京林业大学信息学院,13:18,【例4】顺序查找,在数组ai中查找值等于e的元素,返回其所在位置。for (i=0;i n;i+)if (ai=e) return i+1;return 0;,有的情况下,算法中基本操作重复执行的次数还随问题的输入数据集不同而不同,最好情况:1次 最坏情况:n 平均时间复杂度为:O(n),北京林业大学信息学院,13:18,时间复杂度T(n)按数量级递增顺序为:,复杂度高,复杂度低,指数时间的关

21、系为:O(2n)O(n!)O(nn),当n取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊,P14 图1.6,北京林业大学信息学院,13:18,空间复杂度:算法所需存储空间的度量,记作: S(n)=O(f(n) 其中n为问题的规模(或大小),算法要占据的空间 算法本身要占据的空间,输入/输出,指令,常数,变量等 算法要使用的辅助空间 若输入数据所占空间和算法无关,则不考虑输入本身所占空间,否则应同时考虑。,渐进空间复杂度,北京林业大学信息学院,13:18,1、数据、数据结构等基本概念 2、对数据结构的两个层次的理解逻辑结构的四种形式线性和非线性结构的逻辑特征存储结构的两种形式 3、抽象数据类型的表示方法 4、算法、算法的时间复杂度及其分析的简易方法,小结,北京林业大学信息学院,13:18,P16 第3题 第4题 第6题(1)(4)(5)(6),作业,

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

当前位置:首页 > 高等教育 > 大学课件

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


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

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

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