计算机科学数据结构与算法.pptx
《计算机科学数据结构与算法.pptx》由会员分享,可在线阅读,更多相关《计算机科学数据结构与算法.pptx(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机科学数据结构与算法现在学习的是第1页,共59页本 章 教教 学学 目目 的的1.理解数据结构的概念,理解数据结构的逻辑和存储结构2.理解算法的概念和算法的基本特性,了解算法复杂度的度量方法3.理解线性数据结构,掌握栈和队列、串和数组等典型线性数据结构4.了解非线性的数据结构,了解树、二叉树和图等典型非线性数据结构5.理解排序、查找的概念,了解排序、查找的典型算法及其比较分析方法6.理解递归的概念,了解递归的实际应用 现在学习的是第2页,共59页本 章 教教 学学 内内 容容1.数据结构概述2.线性结构3.非线性结构4.基本算法5.递归现在学习的是第3页,共59页本 章 学学 习习 重重
2、点点1.数据结构的基本概念2.算法的描述、流程图的使用以及算法的复杂度的衡量3.顺序存储和链式存储的方法4.栈、队列、串和数组的概念和用法5.二叉树数据结构6.查询、排序和递归算法现在学习的是第4页,共59页第一节第一节 数据结构概述数据结构概述现在学习的是第5页,共59页5.1 数据结构概述数据结构概述5.1.1 数据结构数据结构 数据是对客观事物的符号表示,是信息的载体,它能够被计算机识别、存储和加工处理,是计算机加工处理的对象,它可以是数值数据,也可以是非数值数据。数值数据是一些整数、实数或复数,主要用于工程计算、科学计算和商务处理等;非数值数据包括字符、文字、图形、图像、语音等。数据元
3、素是构成数据的基本单位。对于复杂事务的数学描述往往需要多个组成成分,每个基本的成分称为一个数据元素。有时,一个数据元素可以细分为一组数据项,数据项是数据中不可再分割的最小单位。研究具体问题时可以根据实际需要,确定数据的组成,即需要有多少数据元素,具体的数据元素是否再细分为数据项。现在学习的是第6页,共59页4.1 数据结构概述数据结构概述4.1.1 数据结构数据结构数据结构则是指互相之间存在着一种或多种关系的数据元素的集合。在任何问题中,数据元素之间都不会是孤立的,它们之间总是存在着这样或那样的关系,这种数据元素之间的关系称为结构。根据数据元素间关系的不同特性,通常有下列四类基本的结构:l集合
4、结构。在集合中,各数据元素间的关系是“属于同一个集合”。集合是元素关系极为松散的一种结构,各元素间没有直接的关联。l线性结构。该结构的数据元素之间存在着一对一的关系。l树型结构。该结构的数据元素之间存在着一对多的关系。l图形结构。该结构的数据元素之间存在着多对多的关系,图形结构也称作网状结构。现在学习的是第7页,共59页5.1 数据结构概述数据结构概述5.1.1 数据结构数据结构 (a)集合结构 (b)线性结构 (c)树型结构(d)图形结构图图 5 1 四类基本结构的示意图四类基本结构的示意图现在学习的是第8页,共59页5.1 数据结构概述数据结构概述4=5.1.1 数据结构数据结构逻辑结构数
5、据元素之间的逻辑关系(设计算法数学模型)物理结构数据结构在计算机中的映像(存储结构算法的实现)顺序存储结构借助元素在存储器的相对位置来表示数据元素之间的逻辑关系。链式存储结构借助指示元素存储地址的指针表示数据元素之间的逻辑关系。现在学习的是第9页,共59页5.1 数据结构概述数据结构概述5.1.1 数据结构数据结构 数据结构主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。因此,主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。现在学习的是第10页,共59页5.1 数据结构概述数
6、据结构概述5.1.2 算法算法用计算机解决一个复杂的实际问题,大体需要如下的步骤。(1)将实际问题数学化,即把实际问题抽象为一个带有一般性的数学问题。这一步要引入一些数学概念,精确地阐述数学问题,弄清问题的已知条件、所要求的结果、以及在已知条件和所要求的结果之间存在着的隐式或显式的联系。(2)对于确定的数学问题,设计其求解的方法,即所谓的算法设计。这一步要建立问题的求解模型,即确定问题的数据模型并在此模型上定义一组运算,然后借助于对这组运算的调用和控制,从已知数据出发导向所要求的结果,形成算法并用自然语言来表述。这种语言还不是程序设计语言,不能被计算机所接受。(3)用计算机上的一种程序设计语言
7、来表达已设计好的算法。换句话说,将非形式自然语言表达的算法转变为一种程序设计语言表达的算法。这一步叫程序设计或程序编制。(4)在计算机上编辑、调试和测试编制好的程序,直到输出所要求的结果。现在学习的是第11页,共59页5.1 数据结构概述数据结构概述5.1.2 算法算法1.算法算法的的概念概念 算法:对问题求解的描述,为解决问题给出的一个确定的、有限长的操作序列。算法具有以下五个重要的特征:1)有穷性:一个算法必须保证执行有限步之后结束。2)确切性:算法的每一步骤必须有确切的定义。3)输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件。4)输出:一
8、个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法没有实际意义。5)可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。现在学习的是第12页,共59页5.1 数据结构概述数据结构概述5.1.2 算法算法1.算法的概念算法的概念 算法与数据结构的关系紧密,在算法设计时先要确定相应的数据结构,而在讨论某一种数据结构时也必然会涉及相应的算法。算法与数据结构是相辅相成的。解决某一特定类型问题的算法可以选定不同的数据结构,而且选择恰当与否直接影响算法的效率。数据结构的优劣由算法的执行来体现。要设计一个好的算法通常要考虑以下几个因素。l正确性:算法的执行结果应当满足
9、预先规定的功能和性能要求。l可读性:一个算法应当思路清晰、层次分明、简单明了、易读易懂。l稳健性:当输入不合法数据时,应能作适当处理,不至引起严重后果。l高效性:有效使用存储空间和有较高的时间效率。现在学习的是第13页,共59页5.1 数据结构概述数据结构概述5.1.2 算法算法2.算法的描述算法的描述 算法可以使用各种不同的方法来描述。最直接的方法是使用自然语言。用自然语言来描述算法的优点是直接,便于人们对算法的阅读,其缺点是不够严谨,对于有些问题的描述不够简洁,表面上容易理解,但对于人们掌握算法的实质和整体结构并不直观。算法设计的最直接目的是指导程序设计,算法也可以使用程序设计语言描述,程
10、序设计语言接近于数学语言,十分严谨,但是需要进行专业化训练,不便于人们阅读理解。因此算法的描述通常使用流程图或伪代码。现在学习的是第14页,共59页5.1 数据结构概述数据结构概述5.1.2 算法算法2.算法的描述算法的描述图图 5 2 流程图基本图元流程图基本图元现在学习的是第15页,共59页5.1 数据结构概述数据结构概述5.1.2 算法算法3.算法的基本结构算法的基本结构图图 5 3 算法基本结构示意图算法基本结构示意图 通过基本结构的有机组合,可以描述各种算法。顺序结构的所有步骤使用率为1;分支结构有些分支不会被执行,使用率小于1;循环结构通常会多次执行,使用率大于1。从复杂程度上看,
11、循环结构最复杂,顺序结构最简单。现在学习的是第16页,共59页5.1 数据结构概述数据结构概述5.1.2 算法算法4.算法的度量算法的度量(1)时间复杂度 指算法从开始执行到处理结束所需要的总时间。通常的做法是:从算法中选取一种对于所研究的问题来说是基本运算的基本操作,以该基本操作重复执行的次数作为算法的时间度量。(2)空间复杂度 指算法从开始执行到处理结束所需的存储量空间的总和。程序运行所需的存储空间包括固定部分:这部分空间与所处理数据的大小和个数无关,或者称与问题的实例的特征无关;可变部分:这部分空间大小与算法在某次执行中处理的特定数据的大小和规模有关。现在学习的是第17页,共59页5.1
12、 数据结构概述数据结构概述5.1.2 算法算法4.算法的度量算法的度量 研究发现,时间和空间通常可以转换。在存储空间有限时,可以选择空间复杂度较低的算法,在减少对空间使用量的同时,时间复杂度通常会增加;如果需要能够较快地求出结果,则需要更大的存储空间支持。在大多数情况下,时间和空间因素可以进行相应转换,具体选择时可根据实际需要和成本因素确定选择什么策略。另外,需要提醒一点,不是时间复杂度高,算法的数学复杂程序就高。使用更高级的数学方法,能够以更少的时间和空间代价获取处理结果。这时,用于算法执行的时间虽然少了,但是用于算法设计的时间会大大增加。如果设计出的程序有足够多的使用率,代价总体上是值得的
13、。现在学习的是第18页,共59页5.1 数据结构概述数据结构概述5.1.2 算法算法5.子算法子算法 为了简化算法设计,提高空间利用率,提出了子算法子算法和算法调用算法调用的概念。所谓子算法,与算法类似,其功能和结构相对简单。设计子算法的目的是为了简化整个算法的设计,对于算法来说,需要用到子算法提供的功能时,通过算法调用来使用子算法提供的功能,即算法调用就是在算法中引用子算法,这样子算法所表示的整个处理过程在算法中就可以用一条调用语句来表示,使得整个算法的结构更为清晰,并且提高了空间得用率。子算法的调用需要专门处理,调用子算法在会多一些时间开销。子算法的方式适用于同一功能多次使用的情况。子算法
14、在具体实现时,可以使用子程序、过程、函数、方法、模块等形式进行实现,具体实现方式与使用的程序设计语言、程序设计方法有关。现在学习的是第19页,共59页第二节第二节 线性结构线性结构现在学习的是第20页,共59页5.2 线性结构线性结构5.2.1 线性表和串线性表和串 线性结构用于描述一对一的相互关系,即结构中元素之间只有最基本的联系。线性结构的特点是逻辑结构简单,易于进行查找、插入和删除等操作,其主要用于对客观世界中具有单一的前驱和后继的数据关系进行描述。1.1.线性表线性表 (1)定义 线性表是n(n=0)个数据元素的有限序列,表中各个元素具有相同的属性,表中相邻元素间存在“序偶”关系。记做
15、:(a1,a2,.ai-1,ai,ai+1,an-1,an)其中,ai-1称为ai 的直接前驱元素,ai+1是ai的直接后继元素 线性表的长度:表中的元素个数 n 位序:i称元素ai在线性表中的位序现在学习的是第21页,共59页5.2 线性结构线性结构5.2.1 线性表和串线性表和串1.1.线性表线性表 (2)顺序存储 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称其为顺序表。内存中的地址空间是线性的,用物理上的相邻实现数据元素之间的逻辑相邻关系既简单又自然。(3)链式存储 顺序存储方法简单,容易实现,但做插入删除操作时,需移动的元素较
16、多,因此效率低。链表的特点恰好与顺序表相反。现在学习的是第22页,共59页5.2 线性结构线性结构5.2.1 线性表和串线性表和串2.2.串串串串 串(即字符串)是一种特殊的线性表,它的数据元素是一个字符,字符串是计算机最常处理的非数值对象。串还具有自身的特性,常常把一个串作为一个整体来处理,因此,在这里我们把串作为独立结构的概念加以研究,介绍串的概念及基本运算。串是由零个或多个任意字符组成的字符序列。一般记作:S=”s1 s2 sn”其中S是串名;(注:双引号为定界符,双引号内的字符序列为串值,引号本身不属于串的内容。)si(1=i=0)个数据元素(节点)的有限集合,若为空集,则为空树空树。
17、否则:(1)有一个特殊的数据元素称为树的根根节点,根节点没有前驱节点。(2)若n1,除根节点之外的其余数据元素被分成m(m0)个互不相交的集合T1,T2,Tm,其每一个集合Ti(1im)本身又是一棵树。树T1,T2,Tm称为这个根节点的子树子树。可以看出,在树的定义中用了递归概念,即用树来定义树。树结构的算法与后面将介绍的二叉树结构的算法相类似,都使用了递归方法。现在学习的是第30页,共59页5.3.1 树树 1.1.树的定义 树具有下面两个特点:(1)树的根节点没有前驱节点,除根节点之外的所有节点有且只有一个前驱节点。(2)树中所有节点可以有零个或多个后继节点。现在学习的是第31页,共59页
18、5.3.1 树树 1.1.树的定义 树中节点拥有的子树的个数称为节点的度度。树的度是树内节点度的最大值,即树中下级节点最多的节点的下级节点个数。节点的层次层次是指从根开始经过的节点数量,根的层次为1。树中节点的最大层次称为树的深度深度或高度高度。所经过的节点序列称为路径路径,如果设各边有权,则路径中各边权值的和称为路径长路径长度度。树内度为0的节点称为叶叶节点,或者称为终端终端节点;度不为0的节点称为分支分支节点,或者称为非终端非终端节点。一棵树的节点除叶节点外,其余的都是分支节点。树中一个节点的子树的根节点称为这个节点的孩子孩子,这个节点称为它孩子节点的双亲双亲,具有同一个双亲的孩子节点互称
19、为兄弟兄弟,双亲节点的上级节点称为祖先祖先,子节点的下级称为子孙子孙。多棵不相交的树构成的集合称为森林森林,树中节点的子树就是森林。现在学习的是第32页,共59页5.3.1 树树 2 2.二叉二叉树 二叉树(Binary Tree)是每个节点最多有两个子树的有序树;这两个子树是分别被称为左子树和右子树的二叉树。二叉树可以为空二叉树,此时树中没有节点。二叉树是度为2的有序树,是树的一个特例,具有树的全部特性且便于学习和理解。计算机使用二进制,二叉树具有特殊意义。图图 5 10 二叉树的五种基本形态二叉树的五种基本形态现在学习的是第33页,共59页5.3.1 树树 2 2.二叉二叉树 满二叉树:二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机科学 数据结构 算法
限制150内