《数据结构概述》PPT课件

上传人:风*** 文档编号:240977294 上传时间:2024-05-22 格式:PPT 页数:39 大小:239.13KB
返回 下载 相关 举报
《数据结构概述》PPT课件_第1页
第1页 / 共39页
《数据结构概述》PPT课件_第2页
第2页 / 共39页
《数据结构概述》PPT课件_第3页
第3页 / 共39页
点击查看更多>>
资源描述
计算机软件计算机软件技术基础技术基础上海大学上海大学 通信与信息工程学院通信与信息工程学院安安 平平计算机基础教学课件计算机基础教学课件1第二章常用数据结构及其运算计算机软件技术基础上海大学通信与信息工程学院计算机基础学时数:学时数:4040,其中习题课,其中习题课2 2学时。学时。讲授主要内容:第讲授主要内容:第2 2、3 3、4 4章章自学内容:自学内容:其余各章其余各章 课程的主要内容及安排课程的主要内容及安排2第二章常用数据结构及其运算学时数:40,其中习题课2学时。课程的主要内容及安排2第二章常用数据结构及其运算常用数据结构及其运算第二章第二章3第二章常用数据结构及其运算常用数据结构及其运算第二章3第二章常用数据结构及其运算内内 容容2 21 1 概概 述述2 22 2 线性表线性表2 23 3 栈与队栈与队2 25 5 树与二叉树树与二叉树2 26 6 图图2 27 7 查查 找找2 28 8 排排 序序4第二章常用数据结构及其运算内容21概述22线性表2.1 2.1 概概 述述2.1.1 2.1.1 数据结构的概念数据结构的概念1.数值型与非数值型数据数值型与非数值型数据2.数值型:数值型:整型、实型、布尔型等整型、实型、布尔型等3.非数值型:非数值型:文献检索、金融管理、商业文献检索、金融管理、商业系统系统 等数据处理等数据处理2.数据结构数据结构研究非数值运算的程序设计问题。研究非数值运算的程序设计问题。数据结构就是相互之间存在一种或多种特定数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。关系的数据元素的集合。如如线性关系、层次关系、网状关系线性关系、层次关系、网状关系等。等。5第二章常用数据结构及其运算2.1概述2.1.1数据结构的概念数值型与非数值型数2.1 2.1 概概 述述数据数据(data)是信息的载体,指所有能输入到是信息的载体,指所有能输入到计算机中并被计算机程序处理的符号的总称。计算机中并被计算机程序处理的符号的总称。如数、字符、符号等的集合。分为如数、字符、符号等的集合。分为数值型数值型和和非非数值型数值型数据两类。数据两类。数据元素数据元素(data element)是数据的基本单位。是数据的基本单位。如数据集合如数据集合N=1N=1,2 2,3 3,4 4,5 5 中整数中整数1 1至至5 5均为数据元素。均为数据元素。数据元素不一定是单个的数字或字符,也可数据元素不一定是单个的数字或字符,也可能是若干个数据项的组合,如学生信息。能是若干个数据项的组合,如学生信息。数据元素有时也称结点或记录。数据元素有时也称结点或记录。3.基本概念和术语基本概念和术语6第二章常用数据结构及其运算2.1概述数据(data)是信息的载体,指所有能输2.1 2.1 概概 述述数据类型数据类型程序设计语言中允许的变量类型程序设计语言中允许的变量类型 基本数据类型(原子类型):变量值不可分,基本数据类型(原子类型):变量值不可分,如整型、实型、字符型等如整型、实型、字符型等 结构类型:变量值可分,如数组、结构体等结构类型:变量值可分,如数组、结构体等数据对象数据对象(data object)性质相同的数据元素性质相同的数据元素的集合的集合。如大写字母字符的数据对象是集合:如大写字母字符的数据对象是集合:C=C=A A,BB,.,Z Z。7第二章常用数据结构及其运算2.1概述数据类型程序设计语言中允许的变量类型数据2.1 2.1 概概 述述数据结构数据结构(data structure)是指同一数据对象中是指同一数据对象中各数据元素间存在的关系。各数据元素间存在的关系。数据结构与算法数据结构与算法 程序程序算法算法数据结构数据结构算法算法指解决特定问题的有限运算序列指解决特定问题的有限运算序列8第二章常用数据结构及其运算2.1概述数据结构(datastructure)2.1 2.1 概概 述述1.1.逻辑结构逻辑结构:研究数据元素及其关系的数学特性,:研究数据元素及其关系的数学特性,即数据元素间的逻辑关系。即数据元素间的逻辑关系。二元组二元组 S=S=(D D,R R)D D数据元素的非空有限集合数据元素的非空有限集合R RD D上关系的非空有限集合。上关系的非空有限集合。2.1.2 2.1.2 数据的逻辑结构和物理结构数据的逻辑结构和物理结构9第二章常用数据结构及其运算2.1概述1.逻辑结构:研究数据元素及其关系的数学特性2.1 2.1 概概 述述四类基本结构:四类基本结构:线性结构(一对一)线性结构(一对一)树形结构(一对多)树形结构(一对多)图形结构(多对多)图形结构(多对多)举举举举 例例例例2.1.2 2.1.2 数据的逻辑结构和物理结构数据的逻辑结构和物理结构集合集合10第二章常用数据结构及其运算2.1概述四类基本结构:线性结构(一对一)树例1:linearity=(D,R),其中D1,2,3,4,5,6,7,8,9,10R=rr=,例2:Tree=(D,R),其中D1,2,3,4,5,6,7,8,9,10R=rr=,11第二章常用数据结构及其运算例1:linearity=(D,R),其中例2:Tre例4:S=(D,R),其中D1,2,3,4,5,6R=r1,r2r1=,r2=,例3:Graph=(D,R),其中D1,2,3,4,5;R=rr=,12第二章常用数据结构及其运算例4:S=(D,R),其中例3:Graph=(D,2.1 2.1 概概 述述2.2.物理结构物理结构(存储结构存储结构):是逻辑结构在计算是逻辑结构在计算机中的映象,即具体实现。机中的映象,即具体实现。四种基本存储结构:顺序存储结构 链式存储结构 索引存储结构 散列存储结构3.3.逻辑结构与存储结构的关系逻辑结构与存储结构的关系算法的设计取决于选定的逻辑结构,而算 法的实现依赖于采用的存储结构。同一种逻辑结构可采用不同的存储结构。2.1.2 2.1.2 数据的逻辑结构和物理结构数据的逻辑结构和物理结构13第二章常用数据结构及其运算2.1概述2.物理结构(存储结构):是逻辑结构在计算2.1 2.1 概概 述述2.1.3 2.1.3 算法与算法分析算法与算法分析一、什么是算法一、什么是算法 算法是对特定问题求解步骤的一种描述,是指算法是对特定问题求解步骤的一种描述,是指令的有限序列,其中每条指令表示一个或多个令的有限序列,其中每条指令表示一个或多个操作。操作。算法的五个特征:算法的五个特征:有穷性、确定性、可行性、有穷性、确定性、可行性、输入、输出输入、输出 算法描述:算法描述:采用采用类类C C语言语言的形式,有时也用自然的形式,有时也用自然语言。注释部分用语言。注释部分用/或或/*.*/*.*/表示。表示。14第二章常用数据结构及其运算2.1概述2.1.3算法与算法分析算法是对特定问2.1 2.1 概概 述述2.1.3 2.1.3 算法与算法分析算法与算法分析二、算法设计的要求:二、算法设计的要求:正确性、健壮性、效率与低存储正确性、健壮性、效率与低存储三、算法评价标准:三、算法评价标准:时间复杂度、空间复杂度时间复杂度、空间复杂度一般时间复杂度考虑的较多。一般时间复杂度考虑的较多。一个可执行的算法不一定是一个好算法,算法的分析一个可执行的算法不一定是一个好算法,算法的分析 通常用计算机执行时在通常用计算机执行时在时间时间和和空间空间两方面的消耗多少两方面的消耗多少作为评价该算法优劣的标准。作为评价该算法优劣的标准。度量一个程序的执行时间通常有两种方法:度量一个程序的执行时间通常有两种方法:事后统计事后统计和和事前分析估算事前分析估算着重介绍第二种第二种方法。(算法、问题规模、语言、机器代码质量、机器执行指令的速度)15第二章常用数据结构及其运算2.1概述2.1.3算法与算法分析二、算法设计的要求2.1 2.1 概概 述述一、时间复杂度一、时间复杂度1.1.频度:频度:指一条语句重复执行的次数。记作:指一条语句重复执行的次数。记作:F(n)F(n)2.2.算法的时间度量算法的时间度量:T(n)=O(F(n)T(n)=O(F(n)是问题规模是问题规模 n n 的某个函数的某个函数F(n),F(n),称为算法称为算法的渐进时间复杂度或时间复杂度。的渐进时间复杂度或时间复杂度。例:例:T(n)=3nT(n)=3n2 2+2n,+2n,则则 T(n)=O(nT(n)=O(n2 2)T(n)=3 T(n)=3n n+2+2n n,则则 T(n)=O(3T(n)=O(3n n)2.1.4 2.1.4 算法分析技术初步算法分析技术初步16第二章常用数据结构及其运算2.1概述一、时间复杂度2.1.4算法分析技术初步2.1 2.1 概概 述述“+x”“+x”的语句频度及三段程序的时间复杂度:的语句频度及三段程序的时间复杂度:(a)(a)(b)(b)(c)(c)F(n):F(n):1 1 n n n n2 2T(n):T(n):O(1)O(1)O(n)O(n)O(n O(n2 2)2.1.4 2.1.4 算法分析技术初步算法分析技术初步例例:(a)+x;s=0a)+x;s=0(b)for(i=1;i=n;+i)+x;s+=x;(b)for(i=1;i=n;+i)+x;s+=x;(c)for(j=1;j=n;+j)(c)for(j=1;j=n;+j)for(k=1;k=n;+k)+x;s+=x;for(k=1;k=n;+k)+x;s+=x;17第二章常用数据结构及其运算2.1概述“+x”的语句频度及三段程序的时间复杂度:问题问题?有A、B两段程序同时运行,在某时刻A的运行速度是B的2倍,因此,A的算法复杂度比B低(即效率高)。2.1 2.1 概概 述述18第二章常用数据结构及其运算问题?2.1概述18第二章常用数据结构及其运算2.1 2.1 概概 述述 常见的时间复杂度常见的时间复杂度 1 1)O(1)O(1):常量型常量型 2 2)O(n)O(n)、O(nO(n2 2)、.、O(nO(nk k):多项式型多项式型 3 3)O(logO(log2 2n)n)、O(2logO(2log2 2n)n):对数型对数型 4 4)O(2O(2n n)、O(eO(en n):指数型指数型按增长率排序,一般有:按增长率排序,一般有:1)1)3)2)4)3)2)4)2.1.4 2.1.4 算法分析技术初步算法分析技术初步T(n)n510 15 202n(n/2)35n2100n200log2n200019第二章常用数据结构及其运算2.1概述常见的时间复杂度2.1.4算法分析2.1 2.1 概概 述述 当难以精确计算基本操作执行次数(或语句频当难以精确计算基本操作执行次数(或语句频度)情况下,只需求出关于度)情况下,只需求出关于 n n 的增长率或阶的增长率或阶即可。即可。当难以确定各种输入数据集出现的概率时,平当难以确定各种输入数据集出现的概率时,平均时间复杂度也难以确定时,可用最坏的情况均时间复杂度也难以确定时,可用最坏的情况作为分析依据作为分析依据 2.1.4 2.1.4 算法分析技术初步算法分析技术初步20第二章常用数据结构及其运算2.1概述当难以精确计算基本操作执行次数(或语句2.1 2.1 概概 述述例:例:求下列程序段的时间复杂度求下列程序段的时间复杂度1.1.for (i=0;in;i+)for (i=0;in;i+)2.2.for (j=0;jn;j+)for (j=0;jn;j+)3.3.bij=0;bij=0;4.4.for (k=0;kn;k+)for (k=0;k 外层逐层分析外层逐层分析25第二章常用数据结构及其运算2.1概述2.1.4算法分析技术初步3)i2.1 2.1 概概 述述 2.1.4 2.1.4 算法分析技术初步算法分析技术初步 5)5)过程调用语句:过程调用语句:a.a.非递归过程:根据过程调用的层次,由内而外分非递归过程:根据过程调用的层次,由内而外分 析程序的运行时间。析程序的运行时间。b.b.递归调用:可先对递归过程设一特定的运行时间递归调用:可先对递归过程设一特定的运行时间 函数函数T(n)T(n),根据过程递归调用的情况,得到根据过程递归调用的情况,得到T(n)T(n)的一个递推关系。的一个递推关系。6)6)go to go to 语句:语句:可以最坏情况进行计算,即在遇到向可以最坏情况进行计算,即在遇到向下转移的下转移的go to go to 语句时,可认为语句时,可认为go to go to 语句所引起语句所引起的控制转移根本没有发生;当遇到向上转移的的控制转移根本没有发生;当遇到向上转移的go go to to 语句时,则必须考虑它对程序运行时间的影响。语句时,则必须考虑它对程序运行时间的影响。26第二章常用数据结构及其运算2.1概述2.1.4算法分析技术初步5)2.1 2.1 概概 述述4.4.时间复杂度计算举例时间复杂度计算举例 2.1.4 2.1.4 算法分析技术初步算法分析技术初步例1:(1)for(i=1;i=i+1;-j)(3)if(Aj-1Aj)(4)temp=Aj-1;(5)Aj-1=Aj;(6)Aj=temp;分析:(4)(6):O(1)(3)(6):O(1)(2)(6):O(1(n-i)=O(n-i)(1)(6):T(n)=O(n2)27第二章常用数据结构及其运算2.1概述4.时间复杂度计算举例2.1.4算法分2.1 2.1 概概 述述2.1.4 2.1.4 算法分析技术初步算法分析技术初步例2:for(i=2;i=i;-j)S;求“S”语句的频度及整个程序段的算法复杂度分析:i=2:执行n-1次i=3:执行n-2次i=n-2;执行3次则:F(n)=3+4+5+n-1=(n-3)(n+2)/2T(n)=O(n2)28第二章常用数据结构及其运算2.1概述2.1.4算法分析技术初步例2:for2.1 2.1 概概 述述2.1.4 2.1.4 算法分析技术初步算法分析技术初步例3:i=1;While(i=n)i=i*3;求语句的频度及整个程序段的算法复杂度分析:设句的频度为F(n)则:T(n)=O(log3n)29第二章常用数据结构及其运算2.1概述2.1.4算法分析技术初步例3:i=12.1 2.1 概概 述述2.1.4 2.1.4 算法分析技术初步算法分析技术初步例4:prime(intn)/n为一正整数inti=2;while(n%i)!=0&i*1.0sqrt(n)printf(“%d是一素数n”,n);elseprintf(“%d不是一素数n”,n);求算法的复杂度分析:设嵌套最深层语句“i+”的频度为F(n),有:F(n)1.0=(y+1)(y+1)doy=y+1;求语句的频度和整个程序段的算法复杂度分析:F(n)F(n)10)do ifw20thenw=w-10;k-elsew=w+10;求语句的频度分析:对每一合法k值,句执行2次则,句频度F(n)=(21-10)22232第二章常用数据结构及其运算2.1概述2.1.4算法分析技术初步例6:w=2.1 2.1 概概 述述2.1.4 2.1.4 算法分析技术初步算法分析技术初步例7:x=87;y=10;while(y0)if(x100)x-=10;y-;elsex+;求语句的频度和整个算法的复杂度。分析:句频度F(n)=15119114T(n)=O(1)33第二章常用数据结构及其运算2.1概述2.1.4算法分析技术初步例7:x2.1 2.1 概概 述述2.1.4 2.1.4 算法分析技术初步算法分析技术初步例8:intfact(intn)/计算n!(1)if(n=1)(2)fact=1;else(3)fact=n*fact(n-1);计算程序段的时间复杂度34第二章常用数据结构及其运算2.1概述2.1.4算法分析技术初步例8:int2.1 2.1 概概 述述2.1.4 2.1.4 算法分析技术初步算法分析技术初步例9:floatp(n)intn;(1)if(n0)if(x100)x-=10;y-elsex+;本节结束,返回目录39第二章常用数据结构及其运算2.1概述2.1.6作业求语句的频度本节结
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!