收藏 分享(赏)

软件基础—— 数据结构与算法.pptx

上传人:oil007 文档编号:3283185 上传时间:2018-10-10 格式:PPTX 页数:209 大小:1.43MB
下载 相关 举报
软件基础—— 数据结构与算法.pptx_第1页
第1页 / 共209页
软件基础—— 数据结构与算法.pptx_第2页
第2页 / 共209页
软件基础—— 数据结构与算法.pptx_第3页
第3页 / 共209页
软件基础—— 数据结构与算法.pptx_第4页
第4页 / 共209页
软件基础—— 数据结构与算法.pptx_第5页
第5页 / 共209页
点击查看更多>>
资源描述

1、全国计算机等级考试辅导教程 公共基础知识,考试大纲,考试方式1 笔试,与程序设计语言(C、VB、VF等)笔试部分合为一张试卷。2 公共基础知识占笔试试卷的30分。3 10道选择题、5道填空题。,基本要求,1 掌握算法的基本概念 2 掌握基本数据结构及其操作 3 掌握基本排序和查找算法 4 掌握逐步求精的结构化程序设计方法 5 掌握软件工程的基本方法,具有初步应用相关技术进行软件开放的能力 6掌握数据库的基本知识,了解关系数据库的设计,考试内容数据结构与算法,1 算法的基本概念:时间复杂度、时间复杂度 2 数据结构的基本概念:逻辑结构、存储结构、图形表示线性结构与非线性结构 3 线性表的定义:顺

2、序存储结构、插入与删除操作 4 栈和队列:顺序存储结构、基本运算 5 线性链表:结构、基本运算 6 树的基本概念:二叉树、遍历 7 查找技术:顺序、二分查找 8 排序技术:交换、选择、插入排序,软件,程序:根据用户需求开发的、用程序设计语言描 述的、适合计算机执行的指令序列 数据是程序能够正常操纵信息的数据结构 文档与程序的开发、维护和使用有关的图文资料如何实现程序,表示数据算法、数据结构,第一章:数据结构与算法,第一节 算法的基本概念 1 定义 算法是指解题方案的准确而完整的描述。 算法不等于程序,当然程序也可以作为算法的描述,但程序还需考虑很多与方法和分析无关的细节问题。,例:有三个硬币,

3、其中一个是伪造的,另两个是真的,伪币与真币重量略有不同。现在提供一座天平,如何找出伪币呢? 分析: 方法明确而有序 按提供的条件进行操作 任何人均可仿照进行(共享智能),A B C,第一章:数据结构与算法,2 算法的基本特征 (1)可行性 同一个算法在不同精度的计算机上应得到相同的结果 例:某计算工具有7位有效数字,计算A=1012 B=1 C=-1012如果采用不同的运算顺序,就会得到不同的结果, 即 A+B+C=1012 +1+(-1012 )=0 1.0000000*1012 A+C+B=1012 +(-1012 )+1=1 (2)确定性 算法中的每一步必须有明确的定义,不允许有多义性。

4、 (3)有穷性 执行有限步骤后终止,应包括合理的执行时间。计算到一定精度 解密 (4)拥有足够的情报 算法的结果与输入的数据有关,不同的输入有不同的结果。当输入错误时,算法可能无法执行。当算法拥有足够多的情报时(考虑的输入可能性越多),出错的可能越小。 (5)至少产生一个输出,综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止,3 算法的基本要素一对数据对象的运算和操作;二算法的控制结构。(1)对数据对象的运算和操作 算术、关系、逻辑运算、数据传输 +-*/ = 与或非 赋值、输入、输出 *(2)算法的控制结构 控制结构一般可分

5、为顺序、选择、循环三种基本结构。描述算法有传统流程图、N-S结构化流程图、算法描述语言等。,算法的表示,文字叙述 流程图表示 N-S图 伪代码描述,文字(自然语言)描述,“比较与的重量,若,则是伪造的;否则再比较与的重量,若,则是伪造的;否则是伪造的。” 缺点: 容易产生歧义,很难 “精确”地进行表达 叙述冗长,很难清楚地表达算法的逻辑流程,算法的流程图表示,流程图由结点和有向边构成,它描述了算法所执行操作的顺序及执行操作的条件 流程图符号 :见下页,比文字描述简明,但当算法比较复杂时,理解困难,容易产生错误,用流程图表示选择排序算法,改进的流程图,传统流程图的弊端:不受限制地使流程随意地转来

6、转去,使流程变得毫无规律,阅读时要花费很大的精力去追踪流程,使人难以理解算法的逻辑。,为了解决这个问题,人们规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构,从而使算法的质量得到保证和提高。,三种基本结构,1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元: 顺序结构 选择结构 循环结构,顺序结构,A和B两个框是顺序执行的。即在执行完A框所指定的操作后,必然接着执行B框所指定的操作。顺序结构是最简单的一种基本结构。,选择结构,选择结构又称为选取结构或分支结构虚线框内是一个选择结构,此结构中包含一个判断框,根据给定的条件

7、p是否成立而选择执行A框或B框。,循环结构,循环结构:反复执行某一部分操作。 循环结构包括 当循环结构:当条件p1成立时,执行A框操作,执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到p1不成立为止, 直到循环结构:先执行A框,然后判断条件p2是否成立,如果p2不成立,则再执行A,然后再对p2的条件做判断,如果p2条件仍然不成立,又执行A。如此反复执行A,直到给定的条件p2成立为止。,例:用流程图表示,手工如何计算N!,用N-S流程图表示算法,N-S结构化流程图:N-S结构化流程图完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其它从属

8、于它的框,或者说,由一些基本的框组成一个大的框。,N-S流程图的三种基本结构,顺序结构 选择结构 当循环结构 直到循环结构,例:用N-S流程图表示,使用伪代码描述算法,伪代码(Pseudo code)是用来描述算法的一种语言,它既类似于自然语言,又使用与程序设计语言相似的方法描述算法,优点:结构清晰,代码简单,可读性好,可以容易地以任何一种编程语言(Pascal, C, Java等)实现,每个整数是A的一个元素:A1, A2, , An,例:求5!,用伪代码表示算法,begin1=t2=iwhile i5 t*i=ti+1=iprint t end,4. 算法的分析,算法分析的基本内容,正确性

9、:给定有效输入后,经过有限时间的计算,产生正确的输出结果 简单性算法是否容易理解,是否容易验证其正确性,程序是否容易调试 简单的算法效率不一定高,要在保证一定效率的前提下力求算法简单 时间复杂性(Time Complexity) : 当问题的规模n充分大时,运行该算法所需要的时间的数量级表示 空间复杂性(Space Complexity) : 除原始数据之外,额外占用的存储空间的大小,时间复杂度(Time Complexity),时间频度: 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。 时间复杂度

10、一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,算法的时间复杂度指的是当规模n充分大时完成该算法所需时间的数量级表示。,空间复杂度(Space Complexity),算法的空间复杂度 执行这个算法所需要的内存空间。 算法所占用的存储空间包括: 算法程序所占的空间 输入的初始数据所占的存储空间 算法执行过程中所需要的额外空间。 额外空间包括算法程序执行过程中的工作单元以及各种数据结构所需要的附加存储空间。,* 4 算法复杂度算法复杂度主要包括时间和空间复杂度。 (1)时间复杂度(次数)指算法的运算次数。(注意:不是指运算的时间) (2)空间复杂度(内存空间)执行

11、算法需要的内存空间。 包括:程序所占的空间输入的数据所占的空间运算时所需的空间,算法的时间复杂度是指() A 执行算法程序所需要的时间 B 算法程序的长度 C 算法执行过程中所需要的基本运算次数 D 算法程序中的指令条数,算法的空间复杂度是指() A 算法程序的长度 B 算法程序中的指令条数 C 算法程序所占的存储空间 D 算法执行过程中所需要的存储空间,第2节 数据结构的基本概念,计算机处理数据,主要考虑两个方面:一 提高数据处理的速度?二 节省存储空间?数据结构主要研究三个方面的问题: (1)数据的逻辑结构:各数据元素间所固有的逻辑关系 (2)数据的存储结构(物理结构):各数据元素在计算机

12、中的存储关系 (3)对各种数据结构进行的运算。,1 数据结构的概念 数据需要处理的数据元素的集合 结构关系,是集合中各个数据元素之间存在的关系 数据结构是指反映数据元素之间关系的数据元素集合的表示 (1)逻辑结构反映数据元素之间逻辑关系的数据结构。例如:春、夏、秋、冬,主要指前件、后件的关系 (2)存储结构(物理结构)在计算机存储空间的存放形式(数据的逻辑结构在计算机中的存放方式)春不一定存储在夏的后面,数据的存储结构是指 () A 存储在外存中的数据 B 数据所占的存储空间量 C 数据在计算机中的顺序存储方式 D 数据的逻辑结构在计算机中的表示,2 数据结构的图形表示,名词解释: (1)结点

13、 (2)前件结点 (3)后件结点 (4)根结点,3 线性结构和非线性结构 一个数据结构中一个数据元素都没有,称该数据结构为空的数据结构。 根据数据元素之间前后件关系的复杂程度,将数据结构分为线性结构和非线性结构 线性结构必须满足以下两个条件: (1)有且只有一个根结点。 (2)每个结点最多有一个前件,也最多一个后件。 非线性结构不必须满足以上两个条件,d1,d2,d3,春,夏,秋,冬,在数据结构中,从逻辑上可以把数据结构分成() A 动态结构和静态结构 B 紧凑结构和非紧凑结构 C 线性结构和非线性结构 D 内部结构和外部结构,第3节线性表和顺序存储结构 1 线性表的基本概念 线由一组数据元素

14、组成。是最简单、最常用的一种数据结构. 线性表是一种线性结构。 非空线性表有如下结构特征: (1)有且只有一个根结点 (2)有且只有一个终结节点 (3)除以上二结点外,每个结点有且只有一个前件,也有且只有一个后件。,2 线性表的顺序存储结构 具有如下特点逻辑相临,物理相临 (1)线性表中所有元素所占的存储空间是连续的。 (2)数据元素在存储空间中是按逻辑顺序依次存放的。,张三 70 70,李四65 90,王五68 80,线性表的顺序存储结构是一种随机存取的存储结构 。可随机访问任意一个结点,线性表的链式存储结构在链式存储结构中,存储空间可以不连续。链式存储方式既可以用于线性结构,也可以用于非线

15、性结构。在用于非线性结构时,其指针的个数要多一些。,HEAD,线性表的链式存储结构是一种顺序存取的存储结构 。,3 线性表的插入运算,14,3、线性表的插入运算,14,3、线性表的插入运算,14,3、线性表的插入运算,14,3、线性表的插入运算,结论: (1)如果在线性表的末尾进行,即在第n个元素之后插入新元素,则只要增加一个元素即可,不需要移动元素 (2)如果要在线性表的第1个元素之前插入,则需要移动表中n个的元素。 (3)在一般情况下,如果在第i个元素之前进行,则第i个元素之后的所有元素都必须移动。 在平均情况下,需要移动表中一半的元素。 因此算法的平均时间复杂度为O(n).,4、线性表的

16、删除运算,4、线性表的删除运算,4、线性表的删除运算,4、线性表的删除运算,4、线性表的删除运算,注意:如果为线性表开辟的存储空间已经满了,不能再插入元素,否则会造成“上溢”错误,1 如果删除第n个元素,则不需要移动其他元素; 2 如果删除第1个元素,则需要移动所有的元素。 3 在一般情况下,若要删除第i个元素,则原来第i个元素之后的所有元素都必须依次往前移动一个位置。 平均要移动表中一半的元素。 算法的平均时间复杂度为O(n).,结论:线性表顺序存储,插入或删除一个元素,效率很低,特别是线性表比较大的情况,由于数据元素的移动而消耗较多的处理时间。线性表的顺序存储结构对于小线性表或者元素不常变

17、动的线性表来说是合适的,因为顺序存储结构比较简单。,对线性表,描述的正确是() A 存储空间不一定连续,且各元素的存储顺序是任意的 B存储空间不一定连续, 且前件元素一定存储在后件元素前面 C存储空间必须连续, 且前件元素一定存储在后件元素后面 D存储空间必须连续,且各元素的存储顺序是任意的,线性表逻辑结构是线性的,存储时可以采用顺序存储和链式存储,讨论存储空间时候要考虑顺序和逻辑两种情况,第4节 栈和队列 1 栈及其运算栈是限定在一端进行插入与删除的线性表。入栈原则:先进后出,后进先出。,栈顶,栈底,6 4,入栈(插入数据),栈顶,栈底,6,栈顶,栈底,入栈(插入数据),栈顶,栈底,出栈(删

18、除数据),栈顶,栈底,出栈(删除数据),栈顶,栈底,出栈(删除数据),2 栈的特点,1 栈顶元素总是最后被插入的元素,也是最早被删除的元素。 2 栈底元素总是最早被插入的元素,也是最晚被删除的元素。 3 栈具有记忆作用。 4 在顺序存储结构下,栈的插入与删除运算不需要移动表中其他数据。 5 栈顶指针,top动态反映了栈中元素的变化情况。 6 栈和线性表实现方法类似顺序和链接,栈的顺序存储结构,用一维数组S(1:m)作为栈的顺序存储空间,其中m为栈的最大容量。,在栈的顺序存储空间S(1:m)中,S(bottom)通常为栈底元素,S(top)为栈顶元素。Top=0表示栈空;top=m表示栈满。,栈

19、的链式存储结构,栈也可以采用链式存储结构,在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。,下列关于栈的描述正确的是() A 在栈中只能插入元素而不能删除元素 B 在栈中只能删除元素而不能插入元素 C 栈是特殊的线性表,只能在一端插入或删除元素 D 栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素,下列关于栈的描述中错误的是() A 栈是先进后出的线性表 B 栈只能顺序存储 C 栈具有记忆作用 D 对栈的插入与删除操作中,不需要改变栈底指针,0809: 一个栈的初始状态为空,现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依

20、次出栈,则出栈序列是_。 A) 12345ABCDE B) EDCBA54321 C) ABCDE12345 D) 54321EDCBA,1 若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是( )A 1,4,3,2 B 2,3,4,1C 3,1,4,2 D 3,4,2,1 2 若进栈序列是1,2,3,4,假定进栈和出栈可以穿插进行,则可能的出栈序列是()A 2,4,1,3 B 3,1,4,2C 3,4,1,2 D 1,2,3,4,2 队列及其运算允许在一端进行插入、而在另一端进行删除的 线性表。即“先进选出,后进后出”的原则,front,rear,入队(插入数据),

21、front,rear,2 队列及其运算允许在一端进行插入、而在另一端进行删除的 线性表。即“先进选出,后进后出”的原则,入队(插入数据),front,rear,2 队列及其运算允许在一端进行插入、而在另一端进行删除的 线性表。即“先进选出,后进后出”的原则,入队(插入数据),front,rear,2 队列及其运算允许在一端进行插入、而在另一端进行删除的 线性表。即“先进先出,后进后出”的原则,出队(删除数据),front,rear,2 队列及其运算允许在一端进行插入、而在另一端进行删除的 线性表。即“先进选出,后进后出”的原则,出队(删除数据),队列的定义,队列:只允许在一端进行删除,在另一端

22、进行插入的顺序表。 队头(front) :允许删除的一端指向排头元素的前一个 队尾(rear) :允许插入的一端指向最后被插入的元素。,当表中没有元素时称为空队列。,在队列中 最先被插入的元素将最先被删除 最后被插入的元素将最后被删除。 队列又称为 “先进先出”的线性表(FIFO) “后进后出”的线性表(LILO) 体现了“先来先服务”的原则。,队列的运算,入队运算:往队列队尾插入一个数据元素。 只涉及队尾指针rear的变化 退队运算:从队列的队头删除一个数据元素。 只涉及排头指针front的变化。,与栈类似,用一维数组作为队列的顺序存储空间。,循环队列及其运算,队列的顺序存储结构一般采用循环

23、队列的形式。 循环队列:将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。,循环队列的元素个数=尾指针-头指针 若为0,队列为空或队列满,通常设置一个标志s,s=0空,s=1满 若为负数,再加其容量即可。 循环队列的元素个数=尾指针-头指针+队列容量,循环队列元素的个数,循环队列的元素个数=尾指针rear-头指针front若为0,队列为空或队列满, 通常设置一个标志s,s=0空,s=1满 若为负数,再加其容量即可。 元素个数=尾指针-头指针+队列容量,队列的链式存储结构,队列也是线性表,也可以采用链式存储结构。,front,rear,栈和队列的共同点是( )A

24、都是先进先出 B 都是后进先出C 只允许在端点处插入和删除元素D 没有共同点,一个队列的入队序列是1,2,3,4,则队列的输出序列是 A 4,3,2,1 C 1,4,3,2 D 3,2,4,1,B 1,2,3,4,front,rear,下列叙述中正确的是()B 栈与队列是非线性结构C 线性链表是非线性结构 D 二叉树是线性结构,下列关于队列的叙述中正确的是() A 在队列中只能插入数据 B 在队列中只能删除数据D 队列是先进后出的线性表,出队(删除数据),C 队列是先进先出的线性表,A 线性表是线性结构,例题,1. 一个队列的初始状态为空。现将元素1、2、3、4、5、A 、B、C、D、E依次入

25、队,然后依次出队,则元素出队的顺序是 12345ABCDE 。 2. 设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有 24 个元素。 3. 设某循环队列的容量为50,如果头指针front=45(指向对头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有 15 个元素。 4. 对于循环队列,下列叙述中正确的是 A.队头指针是固定不变的 B.队头指针一定大于队尾指针 C.队头指针一定小于队尾指针 D.队头指针可以大于队尾指针,也可以小于队尾指针,第5节:线性链表 线性表的顺序结构的主要缺点

26、(1)插入或删除时要移动大量的数据元素。 (2)分配空间后,如果存储空间已满,会出现“上溢”错误。 (3)多个线性表同时工作时,需要大量的连续空间。假设每个数据结点对应一个存储单元,这种存储单元称为存储结点,简称结点。在链式存储方式中,要求每个结点由两部组成:一部分用于存放数据元素值,称为数据区;另一部分用于存放指针,称为指针域。,数据域,指针域,第5节:线性链表在链式存储结构中,存储空间可以不连续。链式存储方式既可以用于线性结构,也可以用于非线性结构。在用于非线性结构时,其指针的个数要多一些。,HEAD,单向链表示意图,双向链表示意图,1 链式存储方法,链式存储结构不要求逻辑上相邻的数据物理

27、上也相邻,结点间的关系由附加的地址(指针)为实现. a h d o b m c,每个结点由两部组成:一部分用于存放数据元素值称为数据区;另一部分用于存放指针称为指针域。,顺序存储,(1)在逻辑上相邻的元素在物理可以不相邻 (2)存储时不用事先准备, 这样会节约存储空间 (3)对增加,删除接点操作简单,不必移动结点,只要改结点中指针值,优点:,除存储本身信息外,还有表示其直接后继信息的指针域,因此其存储 密度小,存储空间利用率低。,缺点:,m,2 插入元素,210,110,先改哪一个地址 m? h?,3 删除元素,110,1 下列对于线性链表的描述中正确的是 A 存储空间不一定是连续,且各元素的

28、存储顺序是任意的 B 存储空间不一定是连续,且前件元素一定存储在后件元素的前面 C 存储空间必须连续,且前件元素一定存储在后件元素的前面 D 存储空间必须连续,且各元素的存储顺序是任意的 2 链表不具备的特点是()B 插入和删除不需要移动任何元素 C 不必事先估计存储空间 D 所需要空间与其长度成正比 3 下列叙述中正确的是() A 线性链表是线性表的链式存储结构 B 栈和队列是非线性结构 C 双向链表是非线性结构 D 只有根结点的二叉树是线性结构,A 可随机访问任意一个结点,第6节 树和二叉树 1 树树是一种非线性结构。,南昌工程学院,信息系,水利系,机电系,软件,应用,网络,应电,供电,通

29、信,2 树基本术语,结点表示树中的元素,包括数据项及若干指向其子树的分支 结点的度结点拥有的子树数 叶子度为0的结点 双亲孩子结点的上层结点叫该结点的双亲 兄弟同一双亲的孩子 树的度-一棵树中最大的结点度数 结点的层次从根结点算起,根为第一层,它的孩子为第二层 树的高度树中结点的最大层次数(树的深度) 森林m(m0)棵互不相交的树的集合,结点A的度:3 结点B的度:2 结点M的度:0,叶子:K,L,F,G,M,I,J,结点I的双亲:D 结点L的双亲:E,树的度:3,结点A的层次:1 结点M的层次:4,树的深度:4,A,B,C,D,E,F,H,I,J,K,结点B的孩子:,结点F的双亲:,树的高度

30、,结点K的层次,树的度,叶子:,结点A的度:,互为兄弟的结点:,2,E,I,J,K,H,D,E,C,B,C,D,E,F,H,I,J,2,4,4,下列关于树的概念错误的是( ) A一棵树中只有一个无前驱的结点 B一棵树的度为树中各个结点的度数之和 C一棵树中,每个结点的度数之和等于结点总数减1 D一棵树中每个结点的度数之和与边的条数相等,二叉树,二叉树具有以下两个特点: (1)非空二叉树只有一个根结点。 (2)每个结点最多有二个子树,且分别称左子树和右子树。,二叉树不是树的特殊情况,主要区别是区分左子树和右子树,即使是在只有一棵树的情况下,也要指明是左子树或右子树。,3 二叉树,两棵不同的二叉树

31、,二叉树的基本性质: (1)第k层上最多有2k-1个结点 (2)深度为m二叉树的最多有2m-1个结点 (3)在任意一个二叉树中,度为0的结点(即叶子结点)总比度为2的点多一个。 (4)具有n个结点的二叉树,其深度至少为log2n+1,例:在深度为5的二叉树中,结点的个数最多为A)32 B)31 C)16 D)15,4 满二叉树:除最后一层外,每一层上的所有结点都有两个子结点。,5 完全二叉树:是除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。,一棵二叉树第六层的结点数最多为 ( ) 个 某二叉树中,度为2的结点有18个,则有( )个叶子结点。 一棵完全二叉树有70

32、0个结点,该二叉树中有( )个叶子结点,32,19,350,N0+N2+N1=700 N1=1 N0=N2+12*N2+N1+1=700 N2=349 N0=350,6 二叉树的遍历 遍历是指不重复地访问二叉树中所有结点。,C,遍历分三种方式:前序、中序和后序遍历。,前序遍历法 首先访问根结点,再访问左子树,最后访问右子树,并且在访问左子树和右子树时,仍然是先访问根,再左子树,最后右子树。,例:用前序法访问:,FCADB EGHP,F,A,P,H,E,D,G,B,C,F,A,P,H,E,D,G,B,ACBD F EHGP,中序遍历法 首先访问历左子树,再访问根结点,最后中序右子树。 并且在访问

33、左子树和右子树时,仍然是先访问左子树,再访问根,最后是右子树。,例:用中序法访问:,C,F,A,P,H,E,D,G,B,后序遍历 首先后序遍历左子树,再右子树,最后访问根结点,并且在访问左子树和右子树时,仍然是先访问左子树,再访问右子树,最后是根。,ABDCHPGEF,例:用后序法访问:,A bdc,F,HPGe,实例:已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是_。 A. cedba B. acbed C. decab D. deabc,c,e,a,d,b,1、由后序可以知道根节点是C; 而C又在中序的最后,说明 没有右子树。,2、由后序知道左子树根节点是

34、e;,3、ba哪一个是根节点?后序,设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为_。,根据前序遍历ABDECF,可知二叉树的根节点是A,由此把中序遍历DBEAFC分为了两部分DBE和FC,,此时可以确定DBE是A的左子树,FC是A的右子树。,前序遍历的第二个节点是B,再根据中序遍历中DBE的顺序,可以确定D为B的左孩子,E为B的右孩子;,同理,前序遍历为CF,中序遍历为FC,可以确定F为C的左孩子,答案是DEBFCA,A,B,C,D,E,F,如图所示的二叉树,其中序遍历的结果为( ) A abcdef B abdefc C dbefac D defbc

35、a,a,b,c,e,f,d,第7节 查找技术 1 顺序查找以下2种情况只能采用顺序查找(1)无序表(2)有序线性表,如果采用链式存储结构。,最坏情况下所需要的比较次数为n,平均查找次数为(n+1)/2,2 二分法查找只适用于顺序存储的有序表。对长度为n的有序线性表,在最坏情况下,二分查找只需比较log2n次,而顺序查找要比较n次。,利用二分法查找元素x的方法如下:将X与线性表的中间项比较 X=中间项:查找成功,结束查找; X中间项:在线性表的后半部分以二分法继续查找。,left,Mid (left+right)/2,right,5,查找20!,right,Mid,2.5,2 二分法查找只适用于

36、顺序存储的有序表。对长度为n的有序线性表,在最坏情况下,二分查找只需比较log2n次,而顺序查找要比较n次。,利用二分法查找元素x的方法如下:将X与线性表的中间项比较 X=中间项:查找成功,结束查找; X中间项:在线性表的后半部分以二分法继续查找。,left,right,Mid,3.5,查找20!,1 在长度为n的有序线性表中进行二分查找,需要的比较次数为_。 2 对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为_。A n+1 B n C (n+1)/2 D n/2,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方

37、法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)

38、剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排

39、序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最

40、前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相

41、交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小

42、的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素

43、之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往

44、前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序

45、法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的

46、,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1

47、交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (

48、2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,(1)先从前往后,把最大的交换到最后 (2)剩下的,在从后往前,把最小的交换到最前 (3)剩下的重复,设线性表的长度为n,则最坏情况下,冒泡排序要经过n/2遍从前向后的扫描和n/2遍从后向前的扫描。需要比较的次数是n(n-1)/2次。,在最坏的情况下,冒泡排序的时间复杂度为O(n2),第8节 排序技术交换类排序法、插入类排序法和选择类排序法。 1 交换类排序法借助元素之间的互相交换进行排序的一种方法。 (1)冒泡排序法。,2 5 3 9 6 1 4 8 7,对长度为10的线性表进行冒泡排序,需要比较的次数为 。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报