教学课件·数据结构与算法(第2版)1.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《教学课件·数据结构与算法(第2版)1.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 课件 数据结构 算法
- 资源描述:
-
1、数据结构与算法1第第1章章 概述概述 1节节2内容提要2基本概念和算法表现形式了解即可基本概念和算法表现形式了解即可算法评价标准、正确性、时间复杂性算法评价标准、正确性、时间复杂性最坏情况和平均情况,很重要最坏情况和平均情况,很重要 主要内容:主要内容:数据结构和算法的基本概念数据结构和算法的基本概念算法的表现形式和评价方法算法的表现形式和评价方法3内容提要3抽象数据类型抽象数据类型结合对表树图的类化示例加以理解结合对表树图的类化示例加以理解 难点:难点:抽象数据类型抽象数据类型算法时间复杂性的计算算法时间复杂性的计算算法时间复杂性的计算方法算法时间复杂性的计算方法通过后续各章对众多算法的分析
2、、评价、通过后续各章对众多算法的分析、评价、时间空间复杂性计算,逐步加以理解时间空间复杂性计算,逐步加以理解41.1 基本概念41数据和数据结点数据和数据结点 n数据是对客观事物的描述形式和编码形式数据是对客观事物的描述形式和编码形式的统称的统称 n是计算机算法和程序的处理对象(输入数是计算机算法和程序的处理对象(输入数据)和计算结果(输出数据)据)和计算结果(输出数据)1.1.1 数据结构的概念数据结构的概念51.1 基本概念1.1.1 数据结构的概念5数据的种类数据的种类n数值型数据(整数、实数等)数值型数据(整数、实数等)n文字型数据(字符、字符串、程序代码)文字型数据(字符、字符串、程
3、序代码)n矩阵、记录矩阵、记录n声音、图像声音、图像数据总是以某种数据总是以某种编码编码形式出现的形式出现的61.1 基本概念1.1.1 数据结构的概念6数据元素(数据元素(data element)数据结点,简称结点(数据结点,简称结点(node)描述描述一个一个独立事物的名称、数量、特征、性质的独立事物的名称、数量、特征、性质的一组相关信息组成一个数据结点一组相关信息组成一个数据结点通常,一个结点含有多个数据项(通常,一个结点含有多个数据项(data item)结点的类型:结构型结点的类型:结构型关键字(关键字(key)单值类型的结点:只含一个数据项单值类型的结点:只含一个数据项71.1.
4、1 数据结构的概念2数据结构的定义 数据结构(data structure)B =(D,R)7数据结构有穷的结点集合D中结点间的有穷关系集合数据的逻辑结构(数据的逻辑结构(logical form)存储形式:物理存储形式:物理结构(结构(physical form)81.1.1 数据结构的概念8物理结构物理结构存储结构存储结构n数据结构的存储形式(存储表示)数据结构的存储形式(存储表示)n存储数据结点和结点之间的关系存储数据结点和结点之间的关系n顺序存储、非顺序存储顺序存储、非顺序存储n存储结点存储结点n用于存储一个数据结点的存储单元用于存储一个数据结点的存储单元n一个数据结点对应一个存储结点
5、一个数据结点对应一个存储结点n数据结点和存储结点统称结点数据结点和存储结点统称结点 n空白结点(空结点、自由结点)空白结点(空结点、自由结点)预留的存储结点(即尚未存储数据的存储结点)预留的存储结点(即尚未存储数据的存储结点)91.1.1 数据结构的概念2数据结构的定义数据结构与算法研究的对象9数据元素的数据元素的集合集合元素元素之间之间的的关系关系对数据集合进行哪些对数据集合进行哪些运算运算实现运算的实现运算的算法算法算法效率算法效率10示例 设D为某专业开设的计算机课程,R是定义在D上的关系 D=C1、C2、C3、C4、C5 R=(x,y)|x课程是y课程的先修课,x,y D 若R1=(C
6、1,C2),(C2,C3),(C3,C4),(C4,C5),则DS=(D,R1)就是一种数据结构(线性表)若R2=(C1,C2),(C2,C3),(C2,C4),(C2,C5),(C3,C5),,则DS=(D,R2)也是一种数据结构10数据元素、结点逻辑结构逻辑结构111.1.1 数据结构的概念3数据结构的种类11表结构、树结构、图结构、散结构表结构、树结构、图结构、散结构 表:描述结点之间简单的先后次序关系表:描述结点之间简单的先后次序关系树:描述结点之间的层次关系、嵌套关系树:描述结点之间的层次关系、嵌套关系图:描述结点之间的图:描述结点之间的“多对多多对多”关系关系散结构:结点之间松散的
7、散结构:结点之间松散的“无关关系无关关系”比如散列表比如散列表 一对一的关系,比如学生成绩单一对一的关系,比如学生成绩单比如城市交通网比如城市交通网 一对多的关系,比如某部门的组织机构一对多的关系,比如某部门的组织机构 121.1.1 数据结构的概念3数据结构的种类12图示:圆圈图示:圆圈表示结点,表示结点,连线连线表示结点之间关系表示结点之间关系 表结构表结构 树结构树结构 散 结 构散 结 构图结构图结构 树、散是图的特例,表是树的特例树、散是图的特例,表是树的特例131.1.2 抽象数据类型 1抽象的意义 抽取事物的共性,忽略个性 体现外部特征,掩盖具体细节 132抽象数据类型的含义抽象
8、数据类型的含义 ADT(Abstract Data Types)将数据连同)将数据连同对其的处理操作封装在一起对其的处理操作封装在一起 3抽象数据类型的实现方法抽象数据类型的实现方法 封装法、半封装法、分散法封装法、半封装法、分散法141.1.3 算法的概念 1算法的定义 14计算机科学家计算机科学家D.E.Knuth(克努特)在其经典巨著(克努特)在其经典巨著计算机程序设计艺术计算机程序设计艺术(The Art of Computer Programming)第一卷中对算法的定义第一卷中对算法的定义 算法,就是算法,就是有穷规则有穷规则的集合,其中的规则规定了的集合,其中的规则规定了解决某特
9、定类型问题的解决某特定类型问题的运算序列运算序列有穷性、确定性、可行性、输入、输出有穷性、确定性、可行性、输入、输出151.1.3 算法的概念 15n有穷性有穷性:一个算法在执行有限步之后必须结束:一个算法在执行有限步之后必须结束n确定性确定性:算法的每一步骤必须确切定义。执行者可:算法的每一步骤必须确切定义。执行者可根据该算法的每一步要求进行操作,并最终得出正根据该算法的每一步要求进行操作,并最终得出正确的结果(即无歧义)确的结果(即无歧义)n可行性可行性:算法中所有的运算都可以精确地实现:算法中所有的运算都可以精确地实现n输入输入:算法有零个或多个输入,即在算法开始之前:算法有零个或多个输
10、入,即在算法开始之前,对算法给定的初始量,对算法给定的初始量n输出输出:算法有一个或多个输出,即与输入有某个特:算法有一个或多个输出,即与输入有某个特定关系的量,简单地说就是算法的最终结果定关系的量,简单地说就是算法的最终结果161.1.3 算法的概念 2算法、数据结构与程序的关系 1616给定问题给定问题设计求解问题的算法设计求解问题的算法 抽象出数据,建立数据结构抽象出数据,建立数据结构 满意满意?正确正确?有错有错 交付使用交付使用正确正确 对算法不满意对算法不满意对数据结构不满意对数据结构不满意不满意不满意满意满意 对算法的性能进行评价对算法的性能进行评价 将算法分解成对数据结构的运算
11、将算法分解成对数据结构的运算 编程实现,并上机调试编程实现,并上机调试 16 本 节 结 束17第第1章章 概述概述 1节节数据结构与算法18第第1章章 概述概述 2节节191.2 算法的描述和评价 191描述形式描述形式 n自然语言自然语言n流程图(流程图(flowchart)n类语言类语言伪代码(伪代码(pseudocode)1.2.1 算法的描述算法的描述 描述形式、描述形式、程序形式(算法的实现形式)程序形式(算法的实现形式)程序中含有算法程序中含有算法2.示例示例 20示例1-1 自然选择排序算法(1)文字叙述从n个数据中选出一个最小元素作为第一项再从剩下的n-1个数据中选出一个最小
12、元素作为第二项重复上述,直至选择最后一项不依赖数据结构,不考虑如何存储数据不依赖数据结构,不考虑如何存储数据 21示例1-1 自然选择排序算法(1)文字叙述从n个数据中选出一个最小元素作为第一项再从剩下的n-1个数据中选出一个最小元素作为第二项重复上述,直至选择最后一项不依赖数据结构,不考虑如何存储数据不依赖数据结构,不考虑如何存储数据 进一步叙述进一步叙述 将数据存储在将数据存储在数组数组an中中从从n个元素中选择最小元个元素中选择最小元aj,换到,换到a0处;处;再从剩下的再从剩下的n-1个元素中选择最小元,换到个元素中选择最小元,换到a1处;处;22示例1-1 自然选择排序算法(1)文字
13、叙述从n个数据中选出一个最小元素作为第一项再从剩下的n-1个数据中选出一个最小元素作为第二项重复上述,直至选择最后一项 循环形式:循环形式:步骤步骤1 1)置)置i=0i=0;步骤步骤2 2)从)从aian-1aian-1选出最小元素选出最小元素akak;步骤步骤3 3)交换)交换aiai与与akak;步骤步骤4 4)i=i+1;i=i+1;步骤步骤5 5)如果)如果i i等于等于n-1n-1,则算法结束;,则算法结束;否则,转步骤否则,转步骤2 2。23示例1-1 自然选择排序算法(2)流图 否 是 结束 i=n1?i=0 交换 ai与 ak 开始 从 ai至 an1选出最小元 ak i=i
14、+1 24示例1-1 自然选择排序算法(3)伪代码)伪代码for(i=0;in-1;i+)从从ai到到an-1中选出最小元素中选出最小元素ak;使使ak与与ai交换交换;25示例1-1 自然选择排序算法for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(ajrightleft=0;right=n-1;i=-1mid=(left+right)/2比较比较x与与amidx=amidxamidi=mid;left=right+1开始开始29示例1-2 二分查找(binary search)(3)伪代码)伪代码 left0,rightn-1;while(leftamid)没找
15、到没找到x,返回,返回-1;mid=(left+right)/2;if(x=amid)找到找到x,返回,返回x的下标的下标mid;if(x n0,T(n)cf(n)都成立都成立 那么,就记作那么,就记作 T(n)=O(f(n)381.2.2 算法的评价标准和评价方法 3时间复杂性T(n)=O(f(n)T(n)是是f(n)的的大大O函数函数只求只求T(n)的最高阶的最高阶忽略其低阶项和常系数忽略其低阶项和常系数f(n):运行时间运行时间 增长率的上界增长率的上界简化简化T(n)的计算;较客观地反映当的计算;较客观地反映当n很大时,很大时,算法的时间性能算法的时间性能 391.2.2 算法的评价标
16、准和评价方法 3时间复杂性n示例示例设设T(n)=n2+4n,有,有f(n)=n2,则:,则:n2+4n=O(n2)证明:证明:因为存在因为存在c=2,n0=4,使对于一切,使对于一切nn0,恒有恒有 n2+4n2 n2注意:注意:f(n)越小,越接近越小,越接近T(n)401.2.2 算法的评价标准和评价方法 3时间复杂性都是都是n的平方阶的的平方阶的又例:算法又例:算法A的时间耗用函数的时间耗用函数 T1(n)=20n2+100n 算法算法B的时间耗用函数的时间耗用函数 T2(n)=0.5n23n+18于是于是 T1(n)=O(n2)T2(n)=O(n2)41常用阶(由低到高)O(1)O(
17、logn)O(n)O(n logn)O(n2)O(n3)O(nc)常数阶常数阶最快最快对数阶对数阶底数无关底数无关线性阶线性阶很理想的阶很理想的阶平方阶平方阶c是常数,多项式阶是常数,多项式阶O(2n)O(n!)指数阶指数阶阶乘阶阶乘阶(无效算法)(无效算法)(均为有效算法)均为有效算法)42示例 某算法T(n)=2n,当n=1000时,其工作量(执行基本语句条数)将达到21000 假定每执行一条基本语句需要花费1毫微秒(10-9秒)时间,那么解此问题共需要:设计算法时,应当选用有效算法,并且尽量设计算法时,应当选用有效算法,并且尽量设法降低它的时间耗用量,以提高算法的运设法降低它的时间耗用量
18、,以提高算法的运行速度行速度 ()1000288921.22 1010360024365淮创年434.最坏情况和平均情况(1)为什么要区分两种情况 有些算法因分支等因素,对不同的输入数据(即使输入数据量都是n)耗用时间会有所不同,而且往往相差很大 为使评价更客观,更有说服力,通常需要分几种情况讨论算法的时间性能 在算法理论分析上,最常见的是分别计算出最坏情况下和平均情况下算法的时间复杂性(也称最坏性态和平均性态)44具有相同输入数据量的不同输入数据算法时间用量的最大值 用TW(n)表示(2)最坏情况(最坏情况(worst-case)说一个算法是说一个算法是“好好”的,总是希望它在任何的,总是希
19、望它在任何情况下运行速度都快情况下运行速度都快最坏情况下算法的最坏情况下算法的时间性态可以表述算法的这一特征时间性态可以表述算法的这一特征4.最坏情况和平均情况最坏情况和平均情况 45对于所有相同输入数据量的各种不同数据,对于所有相同输入数据量的各种不同数据,算法耗用时间的算法耗用时间的“平均值平均值”用用TE(n)表示表示(3)平均情况)平均情况等概率:平均情况(等概率:平均情况(average-case)加概率:期望情况(加概率:期望情况(expected-case)4.最坏情况和平均情况最坏情况和平均情况 46(3)平均情况)平均情况从实用角度看,有些算法遇到最坏情况的可能从实用角度看,
20、有些算法遇到最坏情况的可能性极小极小,在大多数情况下是快的。算法的性极小极小,在大多数情况下是快的。算法的平均性态可以表述算法的这一特征平均性态可以表述算法的这一特征从最坏情况和平均情况两个角度分析算法的时从最坏情况和平均情况两个角度分析算法的时间性能,可以给算法作出更为客观的评价间性能,可以给算法作出更为客观的评价 对于所有相同输入数据量的各种不同数据,对于所有相同输入数据量的各种不同数据,算法耗用时间的算法耗用时间的“平均值平均值”用用TE(n)表示表示 4.最坏情况和平均情况最坏情况和平均情况 475.算法的选用原则 n当数据量不大时,低阶算法未必就快当数据量不大时,低阶算法未必就快 例
21、如,算法例如,算法A1和和A2的时间复杂性分别为的时间复杂性分别为 T1(n)=1000n 和和 T2(n)=n2 虽然虽然O(T1(n)1000时,时,A1好于好于A2 当当n1000时,时,A2好于好于A1,因为,因为T2(n)T1(n)485.算法的选用原则 n总原则:能满足客观要求即可用总原则:能满足客观要求即可用n需要考虑如下因素:需要考虑如下因素:1)算法实现的难易程度)算法实现的难易程度2)算法使用的次数,否实时处理)算法使用的次数,否实时处理 (如通信、天气预报等)(如通信、天气预报等)3)算法运行环境)算法运行环境 输入数据量的大小范围输入数据量的大小范围491.2.2 算法
22、的评价标准和评价方法 算法空间用量函数S(n)时空折中方案(时空折中方案(space versus time trade-offs)算法执行时所需空间(占用内存单元数)算法执行时所需空间(占用内存单元数)通常只计算辅助空间用量通常只计算辅助空间用量不计原始数据所占的空间不计原始数据所占的空间 为了节省时间,先作为了节省时间,先作“预处理预处理”,多记,多记一些信息(多占空间)一些信息(多占空间)时空转换时空转换501.2.3 计算时间复杂性的一般方法 1支配性语句度量法 其他语句花费时间的总和将不超过这个语句花费时间的常数倍用典型语句的执行次数作为程序段花费时间的阶 起支配性作用511支配性语
23、句度量法示例:for(i=1,c=0,s=a0;in;i+)1.if(aia0)2.c+;3.s+=ai;1,2,3:语句序号:语句序号用于讲解算法用于讲解算法可选句可选句1、3作为典型语句作为典型语句T(n)=O(n)522分段计算法若一段耗时为O(f(n)另一段耗时为O(g(m)两段共耗费O(f(n)+O(g(m)=O(f(n)+g(m)取最高阶例 O(n2)+O(n)=O(n2)O(n)+O(n)=O(n)533分层计算法分层计算,相乘,再化简外层循环共执行O(f(n)次内层循环O(g(m)次两层共执行O(f(n)O(g(m)=O(f(n)g(m)次543分层计算法示意性程序1:for(
24、i=0;in;i+)x=y=0;for(j=0;jai)x+=1;if(ajai)y+=1;printf(%d,%dn,x,y);O(n)*O(n/2)=O(n2)553分层计算法直接计算内层总的执行时间 例for(i=1;i=n;i+)for(j=1;j()21nT n=-575数学模型法 利用“便于”计算的数学模型,和复杂的数学演算(包括微分和积分运算),计算T(n)58内容小结58第第1.1节节介绍了数据结构和算法的概念、抽介绍了数据结构和算法的概念、抽象数据类型象数据类型其中,抽象数据类型虽然在程序设计实践其中,抽象数据类型虽然在程序设计实践中很重要,但不是本书的训练重点,属于中很重要
25、,但不是本书的训练重点,属于了解内容和扩展内容了解内容和扩展内容对于数据结构和算法的概念,也无须强记,对于数据结构和算法的概念,也无须强记,理解即可理解即可59内容小结59第1.2节,算法的存在形式分为描述形式和实现形式(即程序形式)描述形式简单直观,易于阅读理解,又便于对算法分析评价,需要好好掌握程序形式往往过于繁杂,尤其是类的实现程序极为冗长,一般不需要全面掌握,当然上机实验是不可缺少的60内容小结60第1.2节算法的评价标准和评价方法占有较大篇幅,既是重点,也是难点尤其是算法时间复杂性的计算方法难度较大,需要循序渐进地学习逐步掌握61内容小结61基本要求基本要求了解了解数据结构和算法的概
展开阅读全文