您好,欢迎访问三七文档
第三章基本数据结构与算法二级ACCESS—基本数据结构与算法本章主要内容算法数据结构٭数据结构研究的主要内容٭基本概念和术语٭数据结构类型٭线性结构和非线性结构٭顺序存储与链式存储٭线性表٭栈和队列٭线性链表٭树与二叉树٭查找和排序٭图二级ACCESS—基本数据结构与算法3.1算法算法的基本概念٭算法:解题方案的准确而完整的描述。٭算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。算法不等于程序,程序不可能优于算法。٭基本特性▪可行性:根据实际问题设计的算法,执行得到满意结果▪确定性:每一步骤必须有明确定义,不允许有多义性。▪有穷性:算法必须能在有限的时间内做完。▪输入和输出:拥有足够的情报,方可执行。二级ACCESS—基本数据结构与算法3.1算法算法的基本要素٭1.对数据对象的运算和操作▪算术运算:+、-、×、÷等▪逻辑运算:、、=、=、=、!=等▪关系运算:and、or、not等▪数据传输:w、r等٭2.算法的控制结构▪算法中各操作之间的执行顺序▪描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等▪算法可以用顺序、选择、循环三种基本机构组合而成。二级ACCESS—基本数据结构与算法3.1算法算法设计基本方法٭(1)列举法:根据问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。٭(2)归纳法:通过列举少量的特殊情况,经过分析,最后找出一般的关系。٭(3)递推:是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。٭(4)递归:将问题逐层分解的过程。٭(5)减半递推技术:“减半”,是指将问题规模减半,而问题性质不变;“递推”,是指重复“减半”过程。٭(6)回溯法:分析问题,找出一个解决总线索,然后沿着这个线索逐步试探。二级ACCESS—基本数据结构与算法3.1算法算法的复杂度:时间复杂度、空间复杂度٭算法的时间复杂度▪算法时间复杂度是指执行算法所需要的计算工作量。▪工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n)٭算法空间复杂度▪算法空间复杂度是指执行这个算法所需要的内存空间。▪存储空间包括:①算法程序所占的空间、②输入数据所占的空间、③算法执行过程中所需要的额外空间。。二级ACCESS—基本数据结构与算法3.2.1数据结构研究的主要内容当今计算机应用的特点٭所处理的数据量大且具有一定的关系;٭对其操作不再是单纯的数值计算,而更多地是需要对其进行组织、管理和检索。应用举例1——学籍档案管理假设一个学籍档案管理系统应包含如下表所示的学生信息。学生基本情况学号姓名性别出生年月......99070101李军男80.12......99070102王颜霞女81.2.......99070103孙涛男80.9......99070104单晓宏男81.3....................................二级ACCESS—基本数据结构与算法特点٭每个学生的信息占据一行,所有学生的信息按学号顺序依次排列构成一张表格;٭表中每个学生的信息依据学号的大小存在着一种前后关系.٭对它的操作通常是插入某个学生的信息,删除某个学生的信息,更新某个学生的信息,按条件检索某个学生的信息等等。3.2.1数据结构研究的主要内容二级ACCESS—基本数据结构与算法应用举例2—制定教学计划在制定教学计划时,需要考虑各门课程的开设顺序。有些课程需要先导课程,有些则不需要;而有些课程又是其他课程的先导课程。比如,计算机专业课程的开设情况如下表所示:3.2.1数据结构研究的主要内容计算机专业学生的必修课程课程编号课程名称需要的先导课程编号C1程序设计基础无C2离散数学C1C3数据结构C1,C2C4汇编语言C1C5算法分析与设计C3,C4C6计算机组成原理C11C7编译原理C5,C3C8操作系统C3,C6C9高等数学无C10线性代数C9C11普通物理C9C12数值分析C9,C10,C1二级ACCESS—基本数据结构与算法课程先后关系的图形描形式c1c9c4c2c12c10c11c5c3c6c7c83.2.1数据结构研究的主要内容特点٭课程的先后关系用图结构描述;٭通过实施创建图结构,按要求将图结构中的顶点进行线性排序。二级ACCESS—基本数据结构与算法数据结构主要研究以下三个方面的问题:٭数据的逻辑结构:数据集合中各元素的信息,及元素之间所固有的逻辑关系(前后件关系)٭数据的存储结构:各数据元素在计算机中的存储关系٭对各种数据结构进行的运算主要目的是为了提高数据的效率。所谓提高数据处理的效率,主要包括两个方面:一是提高数据处理的速度,二是尽量节省在数据处理过程中所占用的计算机存储空间。3.2.1数据结构研究的主要内容二级ACCESS—基本数据结构与算法数据结构是一门研究数据组织、存储和运算的一般方法的学科。是相互有关联的数据元素的集合。3.2.2基本概念和术语•二级ACCESS—基本数据结构与算法•能输入到计算机中•并能被计算机程序处理的•符号的集合。•整数(1,2)、实数(1.1,1.2)•字符串(Beijing)、•图形、声音。•数据结构是一门研究数据组织、存储和运算的一般方法的学科。•3.2.2基本概念和术语二级ACCESS—基本数据结构与算法计算机管理图书问题图书馆里有各种卡片:有按书名编排的、有按作者编排的、有按分类编排。如何将查询图书的这些信息存入计算机中既要考虑查询时间短,又要考虑节省空间数据结构是一门研究数据组织、存储和运算的一般方法的学科。3.2.2基本概念和术语二级ACCESS—基本数据结构与算法最简单的办法之一是建立一张表,每一本书的信息在表中占一行,如数据结构是一门研究数据组织、存储和运算的一般方法的学科。3.2.2基本概念和术语二级ACCESS—基本数据结构与算法如何将0,1,2,3,4,5,6,7,8,9这10个数存放在计算机中能最快地达到你所需要的目的?目的不同,最佳的存储方方法就不同。从大到小排列:9,8,7,6,5,4,3,2,1,0输出偶数:0,2,4,6,8,1,3,5,7,9数据元素在计算机中的表示数据结构是一门研究数据组织、存储和运算的一般方法的学科。3.2.2基本概念和术语二级ACCESS—基本数据结构与算法对数据结构中的节点进行操作处理(插入、删除、修改、查找、排序)数据结构是一门研究数据组织、存储和运算的一般方法的学科。3.2.2基本概念和术语二级ACCESS—基本数据结构与算法数据元素(DataElement)数据元素是数据的基本单位,即数据集合中的个体。有时一个数据元素可由若干数据项(DataItem)组成。数据项是数据的最小单位。数据元素亦称节点或记录。3.2.2基本概念和术语二级ACCESS—基本数据结构与算法数据结构可描述为Group=(D,R)有限个数据元素的集合有限个节点间关系的集合3.2.2基本概念和术语二级ACCESS—基本数据结构与算法1.数据的逻辑结构2、数据的存储结构3、数据的运算:检索、排序、插入、删除、修改等。A.线性结构B.非线性结构A顺序存储B链式存储线性表栈队树形结构图形结构数据结构的三个方面3.3数据结构类型二级ACCESS—基本数据结构与算法3.3.1线性结构和非线性结构线性结构条件٭(1)有且只有一个根结点;٭(2)每一个结点最多有一个前件,也最多有一个后件。٭(3)首节点无前件,尾节点无后件。非线性结构:不满足线性结构条件的数据结构注意:在一个线性结构中插入或删除任何一个节点后还应是线性结构;否则,不能称为线性结构。学生成绩表86胡孝臣986110395刘忠赏9861107100张卓9861109成绩姓名学号二级ACCESS—基本数据结构与算法3.3.1线性结构和非线性结构全校学生档案管理的树形结构的组织方式非线性结构树形结构二级ACCESS—基本数据结构与算法ABCDEFGH树形结构—结点间具有分层次的连接关系HBCDEFGA3.3.1线性结构和非线性结构树形结构二级ACCESS—基本数据结构与算法3.3.1线性结构和非线性结构图形结构:节点间的连接任意1423D={1,2,3,4}R={(1,2),(1,3),(1,4),(2,3)(3,4),(2,4)}无向图213D={1,2,3}R={(1,2),(2,3),(3,2),(1,3)}有向图二级ACCESS—基本数据结构与算法Lo+(n-1)*m元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)*m存储地址存储内容Loc(a)=Lo+(i-1)*m每个元素所占用的存储单元个数3.3.2顺序存储与链式存储顺序存储٭常用于线性数据结构,将逻辑上相邻的数据元素存储在物理上相邻的存储单元里。三个弱点٭插入或删除操作时,需移动大量元数。٭长度变化较大时,需按最大空间分配。٭表的容量难以扩充二级ACCESS—基本数据结构与算法每个节点都由两部分组成:数据域和指针域。数据域:存放元素本身的数据,指针域:存放指针,体现数据元素之间的逻辑联系3.3.2顺序存储与链式存储1536元素21400元素11346元素3∧元素4head1345链接存储结构特点٭比顺序存储结构的存储密度小(每个节点都由数据域和指针域组成)。٭逻辑上相邻的节点物理上不必相邻。٭插入、删除灵活(不必移动节点,仅改变节点中的指针)。链接存储结构二级ACCESS—基本数据结构与算法1346元素31536…….……..…….1536元素21400…….……..…….∧元素413461400元素11345指针存储内容存储地址1536元素21400元素11346元素3∧元素4head13453.3.2顺序存储与链式存储链式存储的地址映射表二级ACCESS—基本数据结构与算法3.3.3线性表线性表的基本概念线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。非空线性表的结构特征٭有且只有一个根结点a1,它无前件;有且只有一个终端结点an,它无后件;٭除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。Lo+(n-1)*m元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)*m存储地址存储内容Loc(a)=Lo+(i-1)*m二级ACCESS—基本数据结构与算法在线性表上常用的运算有初始化、求长度、取元素、修改、插入、删除、检索、排序。线性表的插入操作在线性表L中第i个数据元素之前插入数据元素e٭检查插入要求的有关参数的合理性٭把原来第n个数据元素至第i个元素(共n-i+1)依次后移一个数组元素的位置。٭把新数据元素放在第i个位置上٭修正线性表的数据元素个数。٭线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能性均等,则平均移动元素的个数为:n/23.3.3线性表二级ACCESS—基本数据结构与算法线性表的插入操作(时间复杂度O(n))插入前插入xlastMaxsize-1aia1a0ai-1ai+1an-1a0a1ai-1aian-1lastMaxsize-1后移后ai+1a0a1ai-1ai+1ai+1anxlastMaxsize-1插入后ai+23.3.3线性表二级ACCESS—基本数据结构与算法线性表的删除操作(时间复杂度O(n))3.3.3线性表a0a1ai-1aiai+1an-1删除lastmaxsize删除前a0a1ai-1ai+2an-1lastmaxsize删除后ai+1二级ACCESS—基本数据结构与算法3.3.4栈和队列栈和队列是两种运算时要受到某些特殊限制的线性表,故也称为限定性的数据结构。栈:限定只能在表的一端进行插入和删除的特殊的线性表,此种结构称为后进先出。٭设栈s=(a1,a2,…,ai,…,an)٭其中a1是栈底元素
本文标题:基本数据结构与算法
链接地址:https://www.777doc.com/doc-4823271 .html