《计算机二级数据结构与算法.ppt》由会员分享,可在线阅读,更多相关《计算机二级数据结构与算法.ppt(81页珍藏版)》请在第壹文秘上搜索。
1、1. 基本数据结构与算法(10.22%)1.1 算法(0.82%)1.1.1 算法(algorithm)基本概念定义:算法是指解题方案的准确而完整的描述。算法不等于程序,不等于计算方法。只能说程序是算法的一种描述,所以,程序不可能优于算法的设计。算法是指一系列解决问题的清晰指令。特征:算法具有可行性可行性、确定性确定性、有穷性有穷性、输入输入和输出(拥有足够的情报)输出(拥有足够的情报)等个重要特性。1.1.2 算法的基本要素 1、对数据的运算和操作算术运算逻辑运算关系运算数据传输2、算法的控制结构算法中各操作之间的执行顺序描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等一个
2、算法一般可以用顺序、选择、循环顺序、选择、循环三种基本机构组合而成。1.1.3 算法设计基本方法l列举法l归纳法l递推l递归l减半递推技术l回溯法1.2 算法复杂度1.2.1 时间复杂度l 所谓算法的时间复杂度,是指执行算法所需要的计算工作量。l 可以用算法在执行过程中所需要的基本运算的执行次数来度量算法的工作量。1.2.2 算法的空间复杂度l一般是指执行这个算法所需要的内存空间l一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及某种数据结构所需要的附加存储空间1.2 数据结构(0.96%)数据结构的定义数据的逻辑结构和存储结构数据结构的图形表示线性结构与非线性结
3、构 数据结构是一门研究数据结构是一门研究数据数据组织组织、存储存储和和运算运算的一般方法的学科。的一般方法的学科。1.2.2 基本概念和术语能输入到计算机中能输入到计算机中并能被计算机程序处理的并能被计算机程序处理的符号的集合。符号的集合。整数整数(1,2)(1,2)、实数、实数(1.1,1.2)(1.1,1.2)字符串字符串(Beijing)(Beijing)、图形、声音。图形、声音。1.2.2 基本概念和术语 数据结构是一门研究数据结构是一门研究数据数据组织组织、存储存储和和运算运算的一般方法的学科。的一般方法的学科。1.2.2 基本概念和术语计算机管理图书问题计算机管理图书问题 在图书馆
4、里有各种卡片:有按书名编排的、在图书馆里有各种卡片:有按书名编排的、有按作者编排的、有按分类编排有按作者编排的、有按分类编排如何将查询图书的这些信息存入计算机中如何将查询图书的这些信息存入计算机中既要考虑查询时间短,又要考虑节省空间既要考虑查询时间短,又要考虑节省空间 数据结构是一门研究数据结构是一门研究数据数据组织组织、存储存储和和运算运算的一般方法的学科。的一般方法的学科。最简单的办法之一是建立一张表,最简单的办法之一是建立一张表,每一本书的信息在表中占一行,如每一本书的信息在表中占一行,如 1.2.2 基本概念和术语 数据结构是一门研究数据结构是一门研究数据数据组织组织、存储存储和和运算
5、运算的一般方法的学科。的一般方法的学科。如何将如何将0,1,2,3,4,5,6,7,8,90,1,2,3,4,5,6,7,8,9这这1010个数存放在个数存放在计算机中能最快地达到你所需要的目的?计算机中能最快地达到你所需要的目的? 目的不同,最佳的存储方方法就不同。目的不同,最佳的存储方方法就不同。 从大到小排列:从大到小排列:9,8,7,6,5,4,3,2,1,09,8,7,6,5,4,3,2,1,0输出偶数:输出偶数:0,2,4,6,8,1,3,5,7,9 0,2,4,6,8,1,3,5,7,9 数据元素在数据元素在计算机中的表示计算机中的表示 数据结构是一门研究数据结构是一门研究数据数
6、据组织组织、存储存储和和运算运算的一般方法的学科。的一般方法的学科。1.2.2 基本概念和术语对数据结构中的节点进行对数据结构中的节点进行操作处理操作处理(插入、删除、修改、查找、排序插入、删除、修改、查找、排序)1.2.2 基本概念和术语 数据结构是一门研究数据结构是一门研究数据数据组织组织、存储存储和和运算运算的一般方法的学科。的一般方法的学科。数据元素数据元素(Data Element)(Data Element) 数据元素是数据的基本单位,即数据数据元素是数据的基本单位,即数据集合中的个体。集合中的个体。 有时一个数据元素可由若干有时一个数据元素可由若干数据项数据项(Data Item
7、)(Data Item)组成。数据项是数据的最小组成。数据项是数据的最小单位。单位。数据元素亦称数据元素亦称节点节点或或记录记录。数据结构可描述为数据结构可描述为 B=(D,R)有限个数据元素的集合有限个数据元素的集合有限个节点间关系的集合有限个节点间关系的集合 1数据的逻辑结构 2、数据的存储(物理)结构 3、数据的运算:检索、排序、插入、删除、修改等。 A线性结构 B非线性结构A 顺序存储 B 链式存储 线性表栈队树形结构图形结构数据结构的三个方面 数据结构可描述为数据结构可描述为 B=(D,R)线性结构线性结构 A , B , C , ,X ,Y , Z学 生 成 绩 表86胡孝臣986
8、110395刘忠赏9861107100张卓9861109成绩姓名学号线性表线性表结点间是以线性关系联结结点间是以线性关系联结 1数据的逻辑结构 2、数据的存储结构 3、数据的运算:检索、排序、插入、删除、修改等。 A线性结构 B非线性结构A 顺序存储 B 链式存储 线性表栈队树形结构图形结构数据结构的三个方面 数据结构可描述为数据结构可描述为 B=(D,R)树形结构树形结构全校学生档案管理的组织方式全校学生档案管理的组织方式计算机程序管理系统也是典型的树形结构计算机程序管理系统也是典型的树形结构ABCDEFGH树形结构 结点间具有分层次的连接关系HBCDEFGA 1数据的逻辑结构 2、数据的存
9、储结构 3、数据的运算:检索、排序、插入、删除、修改等。 A线性结构 B非线性结构A 顺序存储 B 链式存储 线性表栈队树形结构图形结构数据结构的三个方面 (亦称物理结构亦称物理结构)1423 D= 1 , 2 , 3 , 4 R=(1,2) , (1,3) , (1,4) , (2,3) (3,4) , (2,4) 213 D= 1 , 2 , 3 R= (1,2) , (2,3) , (3,2) , (1,3) 图形结构图形结构节点间的连结是任意的节点间的连结是任意的 1数据的逻辑结构 2、数据的存储结构 3、数据的运算:检索、排序、插入、删除、修改等。 A线性结构 B非线性结构A 顺序存
10、储 B 链式存储 线性表栈队树形结构图形结构数据结构的三个方面 (亦称物理结构亦称物理结构)元素n.元素i.元素2元素1LoLo+mLo+(i-1)*mLo+(n-1)*m存储地址存储内容Loc(a)=Lo+(i-1)*m顺序存储每个元素所占用每个元素所占用的存储单元个数的存储单元个数元素n.元素i.元素2元素1存储内容顺序存储结构常用于线性顺序存储结构常用于线性数据结构,将逻辑上相邻数据结构,将逻辑上相邻的数据元素存储在物理上的数据元素存储在物理上相邻的存储单元里。相邻的存储单元里。顺序存储结构的三个弱点:顺序存储结构的三个弱点:1.作插入或删除操作时,需移动大量元数。作插入或删除操作时,需
11、移动大量元数。2.长度变化较大时,需按最大空间分配。长度变化较大时,需按最大空间分配。3.表的容量难以扩充。表的容量难以扩充。 1数据的逻辑结构 2、数据的存储结构 3、数据的运算:检索、排序、插入、删除、修改等。 A线性结构 B非线性结构A 顺序存储 B 链式存储 线性表栈队树形结构图形结构数据结构的三个方面 (亦称物理结构亦称物理结构)1536元素21400元素11346元素3 元素41345h 链式存储 每个节点都由两部分组成:每个节点都由两部分组成:数据域数据域和和指针域指针域。数据域数据域存放元素本身的数据,存放元素本身的数据,指针域指针域存放指针。存放指针。数据元素之间逻辑上的联系
12、由指针来体现数据元素之间逻辑上的联系由指针来体现。1536元素21400元素11346元素3 元素4head 1346 元素3 1536 . . . 1536 元素2 1400 . . . 元素4 1346 1400 元素1 1345 指针 存储内容存储地址 链式存储 13451536元素21400元素11346元素3 元素41345h 链式存储 1.比顺序存储结构的存储密度小比顺序存储结构的存储密度小 (每个节点都由数据域和指针愈组成每个节点都由数据域和指针愈组成)。2.逻辑上相邻的节点物理上不必相邻。逻辑上相邻的节点物理上不必相邻。3.插入、删除灵活插入、删除灵活 (不必移动节点,只要改变
13、节点中的指针不必移动节点,只要改变节点中的指针)。链接存储结构特点:链接存储结构特点: 1数据的逻辑结构 2、数据的存储结构 3、数据的运算:检索、排序、插入、删除、修改等。 A线性结构 B非线性结构A 顺序存储 B 链式存储 线性表栈队树形结构图形结构数据结构的三个方面 (亦称物理结构亦称物理结构) 线性结构和非线性结构如果一个非空的数据结构满足下列两个条件:l有且只有一个根结点;l每一个结点最多有一个前件,也最多有一个后件则称该数据结构为线性结构(又称为线性表)。一个线性结构中插入或删除任何一个节点后还应是线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。线性与非线性结构都可以是
14、空的数据结构。1.3 线性表(0.24%)1.3.1 线性表的定义 线性表是线性表是n个元素的有限序列,它们之间的关系个元素的有限序列,它们之间的关系可以排成一个线性序列:可以排成一个线性序列: a1,a2, ,ai, ,an其中其中n称作表的长度,当称作表的长度,当n=0时,称作空表。时,称作空表。线性表的特点:线性表的特点:1.线性表中所有元素的性质相同。线性表中所有元素的性质相同。2.除第一个和最后一个数据元素之外,其它数据元素有除第一个和最后一个数据元素之外,其它数据元素有且仅有一个前驱和一个后继。第一个数据元素无前驱,且仅有一个前驱和一个后继。第一个数据元素无前驱,最后一个数据元素无
15、后继。最后一个数据元素无后继。3.数据元素在表中的位置只取决于它自身的序号。数据元素在表中的位置只取决于它自身的序号。在线性表上常用的运算有:在线性表上常用的运算有:初始化、求长度、取元素、修改、插入、删除、检索、初始化、求长度、取元素、修改、插入、删除、检索、排序。排序。1.3.2 线性表的顺序存储结构及其插入与删除操作特点:特点: 1、线性表中数据元素类型一致,只有数据域,、线性表中数据元素类型一致,只有数据域,存储空间利用率高。存储空间利用率高。 2、所有元素所占的存储空间是连续的、所有元素所占的存储空间是连续的 3、各数据元素在存储空间中是按逻辑顺序依、各数据元素在存储空间中是按逻辑顺
16、序依次存放的次存放的 2. 做插入、删除时需移动大量元素。做插入、删除时需移动大量元素。 3. 空间估计不明时,按最大空间分配。空间估计不明时,按最大空间分配。元素元素a an n.元素元素a ai i.元素元素a a2 2元素元素a a1 1bb+mb+(i-1)*m b+(maxlen-1)*m存储地址存储地址内存状态内存状态Loc(元素元素i)=b +(i-1)*m顺序存储结构示意图顺序存储结构示意图(顺序表顺序表):首地址首地址起始地址起始地址基地址基地址每个元素所占用每个元素所占用的存储单元个数的存储单元个数.a2a1an.ai+1ai01i-1in-1 1- 1插入运算插入运算ai-1.a2a1alength ai+1ai x ai-1. a2 a1 ai ai+1 alength alength ai+1 ai x 插入算法的分析 假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能性均等,则平均移动元素的个数为:1n1iis2n1)i(n1n1E 删除算法的分析 在进行删除操作时,若假定删除每个元素的可能性均等,则平均移动元素的个数为: