数据结构第一章绪论课件_第1页
数据结构第一章绪论课件_第2页
数据结构第一章绪论课件_第3页
数据结构第一章绪论课件_第4页
数据结构第一章绪论课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程安排说明:1、本课程的先修课程是程序设计和离散数学 2、本课程是操作系统、编译原理和数据库的基础数据结构课程安排说明:1、本课程的先修课程是程序设计和离什么是数据结构算法定义算法的性能分析第一章 绪论什么是数据结构第一章 绪论1.1 什么是数据结构程序=算法+数据结构数据结构是程序设计的基础。算法是在数据结构的基础上建立的。1.1 什么是数据结构程序=算法+数据结构数据(data)数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序识别和处理的符号的集合。 数值性数据 非数值性数据1.2 数据结构的概念 数据(data)数据是对客观事物的符号表示,在计算

2、机科学中是数据元素 (data element)数据的基本单位。在计算机程序中常作为一个整体进行考虑和处理。有时一个数据元素可以由若干数据项(Data Item)组成。数据项是具有独立含义的最小标识单位。数据元素又称为元素、结点、记录。如:每个学生的信息、棋盘中每个格局、比赛中每个项目数据元素 (data element)数据的基本单位。在计算数据对象 (data object)数据对象是具有相同性质的数据元素的集合。整数数据对象 N = 0, 1, 2, 如:学生档案组成一个数据对象 棋所有格局构成一个数据对象数据对象 (data object)数据对象是具有相同性质的数 据 结 构定义:

3、指某一数据对象的所有数据成员之间的关系。记为: Data_Structure = (D, S) 其中,D 是某一数据对象,S 是该对象中所有数据成员之间的关系的有限集合。数 据 结 构定义: 数据结构主要研究三方面内容:数据元素间的逻辑关系,即数据的逻辑结构;数据元素及其关系在计算机存储内的表示,即数据的存储结构;数据的运算,即对数据元素施加的操作。数据结构主要研究三方面内容:数据元素间的逻辑关系,即数据的逻数据的逻辑结构 数据元素之间的逻辑关系数据的逻辑结构从逻辑关系上描述数据,与数据的存储无关;数据的逻辑结构可以看作是从具体问题抽象出来的数据模型;数据的逻辑结构与数据元素本身的形式、内容无

4、关;线性结构: 线性表非线性结构:树、 图(或网络)数据的逻辑结构分类数据的逻辑结构 数据元素之间的逻辑关系数线性结构树形结构树 二叉树 二叉搜索树3158710119613987456231a1a2a3a4 a5101413121123456789110线性结构树形结构树 二叉树 堆结构 “最大”堆 “最小”堆123548711102916410121151236987堆结构 “最大”堆 “最小”堆12354871图结构 网络结构12564312543611331814665161921图结构 网络结构12564312543数据的存储结构 数据元素及其关系在计算机存储器内的表示 数据的存储结

5、构是逻辑结构用计算机语言的实现;数据的存储结构 的主要方法: 顺序存储方法 链式存储方法 (索引存储方法 散列存储方法)数据的存储结构 数据元素及其关系在计算机存a1 a2 a3 a4 a5 a6 1 2 3 4 5 6顺序存储表示结点间的逻辑关系由存储单元的邻接关系来体现链式存储表示a0a1a2a3a4结点间的逻辑关系由附加的指针字段来表示a1 a2 a3 a4 a5 a6 1索引存储表示索引表索引存储表示索引表数据的逻辑结构 与数据的存储结构之间的关系 同一种逻辑结构可以映象成 不同的存储结构数据的存储结构一定要正确 反映出数据元素之间的逻辑关系数据的逻辑结构数据的存储结构一定要正确抽象数

6、据类型(abstract data type,简称ADT)是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型可以用三元组表示: (D,S,P)其中,D是数据对象,S是D上的关系集,P是对D的基本操作集。ADT抽象数据类型名 数据对象:数据对象的定义 数据关系:数据关系的定义 基本运算:基本运算的定义 ADT抽象数据类型名抽象数据类型(abstract data type,简称AD1.3 算 法定义:解决某一特定问题而采取的具体方法和步骤。特性:输入 有0个或多个输入 输出 有一个或多个输出(处理结果) 确定性 每步定义都是确切、无歧义的 有穷性 算法应在执行有穷步后结束 可行性 算法中

7、的每一步都具有可行性描述:一个算法可用自然语言、数学语言、图形及程序设计语言等来描述。这里用类C语言。1.3 算 法定义:解决某一特定问题而采取的具体方法 算法与程序算法是独立于具体的计算机 与具体的程序设计语言 程序是利用具体的计算机语言 来描述算法 算法与程序算法是独立于具体的计算机算法分析就是衡量算法质量的优劣。算法分析的目在于改进算法。算法分析主要从三方面考虑: 执行算法所耗费的时间(时间性能) 执行算法所耗存储空间(空间性能) 算法应易于理解,易于编码, 易于调试等等算法分析就是衡量算法质量的优劣。算法的时空性能分析时间复杂度空间复杂度算法的时空性能分析时间复杂度时间复杂度度量运行时

8、间 = 算法中每条语句执行时间之和。每条语句执行时间 = 该语句的执行次数(频度)* 语句执行一次所需时间。语句执行一次所需时间取决于机器的指令性能和速度和编译所产生的代码质量,很难确定。设每条语句执行一次所需时间为单位时间,则一个算法的运行时间就是该算法中所有语句的频度之和。时间复杂度度量运行时间 = 算法中每条语句执行时间之和。时间复杂度算法中所有语句的频度之和是矩阵阶数n的函数 T(n) = 2n3 + 2n2 + 2n +1一般地,称 n 是问题的规模。则时间复杂度 T(n) 是问题规模 n 的函数。当n - 时,把时间复杂度的数量级(阶)称为算法的渐进时间复杂度 T(n) = O(n

9、3)时间复杂度算法中所有语句的频度之和是矩阵阶数n的函数渐进时间复杂度大O表示法加法规则 针对并列程序段 T(n) = T1 (n) + T2 (n) = O(max (f (n), g (n)乘法规则 针对嵌套程序段 T (n) = T1 (n) * T2 (n) = O(f (n)*g (n)渐进时间复杂度大O表示法常见时间复杂度:(按数量级递增排列) O (1)、 O (log2n) 、 O( n)、 O (nlog2n)、 O( n2 )、O (n3 )、 O( 2n )、 O (3n )常见时间复杂度:例:设有两个算法在同一机器上运行,其执行时间分别为 100n2 和 2n,问:要使

10、前者快于后者,n 至少要取多大? 解答: 问题是找出满足 100n2 2n = 8192 n = 14时,100n2 = 19600 2n = 16384 n = 15时,100n2 = 22500 = 0 & Ai != k ) i-; return i;算法的语句 i- 的频度不仅与 n 有关,还与 A 中各元素的取值,以及 k 的取值有关。通常要分析其最好情况、最坏情况及平均情况有时, 算法的时间复杂度不仅依赖于问题规模n,还与输入实例的空间复杂度度量一个算法在计算机存储器中所占用的空间有存储算法本身所占用的空间算法中要处理的数据所占用的空间算法在运行过程中附加的存储空间空间复杂度度量一个算法在计算机存储器中所占用的空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论