计算机二级 公共基础知识 数据结构与算法
第一章数据结构与算法1.1 算法1、算法的基本特征(1)可行性。
(2)确定性。
(3)有穷性。
(4)拥有足够的情报。
*:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
2、算法复杂度主要包括时间复杂度和空间复杂度。
(1)算法时间复杂度:指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。
(2)算法空间复杂度:指执行这个算法所需要的内存空间。
1.2 数据结构的基本概念1、数据结构是指相互有关联的数据元素的集合。
2、数据结构主:(1)数据的逻辑结构:是指反映数据元素之间的逻辑关系的数据结构。
数据的逻辑结构有两个要素:数据元素的集合,记作D,数据之间的前后件关系,记作R,则数据结构B=(D,R)(2)数据的存储结构:在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。
常用的存储结构有顺序、链接等存储结构。
顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。
链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。
3、数据结构的图形表示在结构图中,没有前件的结点称为根结点,没有后件的结点称为终端结点,也称叶子结点。
4、数据结构分为两大类型:线性结构和非线性结构。
(1)线性结构(非空的数据结构)条件:1)有且只有一个根结点;2)每一个结点最多有一个前件,也最多有一个后件。
*:常见的线性结构有线性表、栈、队列和线性链表等。
(2)非线性结构:不满足线性结构条件的数据结构。
*:常见的非线性结构有树、二叉树和图等。
1.3 线性表及其顺序存储结构1、线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
线性表是由n(n≥0)个数据元素组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。
线性表中数据元素的个数称为线性表的长度。
线性表可以为空表。
*:线性表是一种存储结构,它的存储方式:顺序和链式。
2、线性表的顺序存储结构具有两个基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
*:由此可以看出,在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面,可以通过计算机直接确定第i个结点的存储地址。
3、顺序表的插入、删除运算(1)顺序表的插入运算:在一般情况下,要在第i(1≤i≤n)个元素之前插入一个新元素时,首先要从最后一个(即第n个)元素开始,直到第i个元素之间共n-i+1个元素依次向后移动一个位置,移动结束后,第i个位置就被空出,然后将新元素插入到第i项。
插入结束后,线性表的长度就增加了1。
*:顺性表的插入运算时需要移动元素,在等概率情况下,平均需要移动n/2个元素。
(2)顺序表的删除运算:在一般情况下,要删除第i(1≤i≤n)个元素时,则要从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置。
删除结束后,线性表的长度就减小了1。
*:进行顺性表的删除运算时也需要移动元素,在等概率情况下,平均需要移动(n-1)/2个元素。
插入、删除运算不方便。
1.4 栈和队列1、栈及其基本运算栈是限定在一端进行插入与删除运算的线性表。
在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。
栈顶元素总是最后被插入的元素,栈底元素总是最先被插入的元素。
即栈是按照“先进后出”或“后进先出”的原则组织数据的。
2、队列及其基本运算队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。
尾指针(Rear)指向队尾元素,头指针(front)指向排头元素的前一个位置(队头)。
队列是“先进先出”或“后进后出”的线性表。
队列运算包括:1)入队运算:从队尾插入一个元素;2)退队运算:从队头删除一个元素。
循环队列及其运算:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从头指针front指向的后一个位置直到队尾指针rear指向的位置之间,所有的元素均为队列中的元素。
*:循环队列中元素的个数=rear-front。
1.5 线性链表线表顺序存储的缺点:(1)插入或删除的运算效率很低。
在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素;(2)线性表的顺序存储结构下,线性表的存储空间不便于扩充;(3)线性表的顺序存储结构不便于对存储空间的动态分配。
1.线性链表:线性表的链式存储结构称为线性链表。
在线性链表中用一个专门的指针HEAD指向线性链表中第一个数据元素的结点(即存放第一个元素的地址)。
线性表中最后一个元素没有后件,因此,线性链表中的最后一个结点的指针域为空(用Null或0表示),表示链终结。
单链表:从表头开始向后扫描链表中的所有结点,而不能从中间或表尾结点向前扫描位于该结点之前的元素。
双向链表:对链表中的元素设置两个指针域,一个为指向前件的指针域,称为左指针(LLink),一个为指向后件的指针域,称为右指针(RLink)。
2、线性链表的基本运算(1)在线性链表中包含指定元素的结点之前插入一个新元素。
*:在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。
(2)在线性链表中删除包含指定元素的结点。
*:在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。
3、循环链表及其基本运算在线性链表中,其插入与删除的运算虽然比较方便,但还存在一个问题,在运算过程中对于空表和对第一个结点的处理必须单独考虑,使空表与非空表的运算不统一。
为了克服线性链表的这个缺点,可以采用另一种链接方式,即循环链表。
与前面所讨论的线性链表相比,循环链表具有以下两个特点:1)在链表中增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点,而循环链表的头指针指向表头结点;2)循环链表中最后一个结点的指针域不是空,而是指向表头结点。
即在循环链表中,所有结点的指针构成了一个环状链。
循环链表的优点主要体现在两个方面:一是在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点,而线性单链表做不到这一点;二是由于在循环链表中设置了一个表头结点,在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。
*:循环链表是在单链表的基础上增加了一个表头结点,其插入和删除运算与单链表相同。
但它可以从任一结点出发来访问表中其他所有结点,并实现空表与非空表的运算的统一。
1.6 树与二叉树1、树的基本概念树是一种简单的非线性结构。
在树结构中,数据元素之间有着明显的层次结构。
在树的图形表示中,用直线连接两端的结点,上端点为前件,下端点为后件。
在树结构中,每一个结点只有一个前件,称为父结点。
如A即为结点B、C、D的父结点。
没有父结点的结点只有一个,称为根结点。
如上图所示,结点A即为根结点。
每一个结点可以有多个后件,它们均称为该结点的子结点。
如结点G、H、I是结点D的子结点。
没有后件的结点,称为叶子结点。
上图中,叶子结点有:J、M、N、L、C、G、H、I。
在树结构中,一个结点所拥有的后件结点个数称为该结点的度。
例如,结点D的度为3,结点E的度为1等,按此原则,所有叶子结点的度均为0。
在树中,所有结点中最大的度称为该树的度。
上图所示的树中,所有结点中最大的度是3,所以该树的度为3。
树分层,根结点为第一层,往下依次类推。
同一层结点的所有子结点均在下一层。
如上图:A结点在第1层,B、C、D结点在第2层;E、F、G、H、I在第3层;J、K、L在第4层;M、N在第5层。
树的最大层次称为树的深度。
上图树的深度为5。
在树中,某结点的一个子结点为根构成的树称作该结点的子树。
叶子结点没有子树。
2、二叉树及其基本性质(1)什么是二叉树二叉树是一种很有用的非线性结构,它具有以下两个特点:1)非空二叉树只有一个根结点;2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
*:根据二叉树的概念可知,二叉树的度可以为0(叶结点)、1(只有一棵子树)或2(有2棵子树)。
(2)二叉树的基本性质性质1在二叉树的第k层上,最多有2k-1(k≥1)个结点。
性质2深度为m的二叉树最多有个2m-1个结点。
性质3在任意一棵二叉树中,度数为0的结点(即叶子结点)总比度为2的结点多一个。
性质4具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。
3、满二叉树与完全二叉树满二叉树:除最后一层外,每一层上的所有结点都有两个子结点。
完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
下图a表示的是满二叉树,下图b表示的是完全二叉树:完全二叉树还具有如下两个特性:性质5具有n个结点的完全二叉树深度为[log2n]+1。
性质6设完全二叉树共有n个结点,如果从根结点开始,按层序(每一层从左到右)用自然数1,2,…,n给结点进行编号,则对于编号为k(k=1,2,…,n)的结点有以下结论:①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点的编号为INT(k/2)。
②若2k≤n,则编号为k的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)。
③若2k+1≤n,则编号为k的右子结点编号为2k+1;否则该结点无右子结点。
4、二叉树的存储结构在计算机中,二叉树通常采用链式存储结构。
与线性链表类似,用于存储二叉树中各元素的存储结点也由两部分组成:数据域和指针域。
但在二叉树中,由于每一个元素可以有两个后件(即两个子结点),因此,用于存储二叉树的存储结点的指针域有两个:一个用于指向该结点的左子结点的存储地址,称为左指针域;另一个用于指向该结点的右子结点的存储地址,称为右指针域。
*:一般二叉树通常采用链式存储结构,对于满二叉树与完全二叉树来说,可以按层序进行顺序存储[注释1] 。
5、二叉树的遍历二叉树的遍历是指不重复地访问二叉树中的所有结点。
二叉树的遍历可以分为以下三种:(1)前序遍历(DLR):根左右(2)中序遍历(LDR):左根右(3)后序遍历(LRD):左右根1.7 查找技术查找即是指在一个给定的数据结构中查找某个指定的元素。
1、顺序查找基本思想:从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查到所要找的元素为止。
计算机二级公共基础知识数据结构与算法
计算机二级公共基础知识数据结构与算法第一章数据结构与算法1.1 算法1、算法的基本特征(1)可行性。
(2)确定性。
(3)有穷性。
(4)拥有足够的情报。
*:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
2、算法复杂度主要包括时间复杂度和空间复杂度。
(1)算法时间复杂度:指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。
(2)算法空间复杂度:指执行这个算法所需要的内存空间。
1.2 数据结构的基本概念1、数据结构是指相互有关联的数据元素的集合。
2、数据结构主:(1) 数据的逻辑结构:是指反映数据元素之间的逻辑关系的数据结构。
数据的逻辑结构有两个要素:数据元素的集合,记作D,数据之间的前后件关系,记作R,则数据结构B=(D,R)(2) 数据的存储结构:在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。
常用的存储结构有顺序、链接等存储结构。
顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。
链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。
3、数据结构的图形表示在结构图中,没有前件的结点称为根结点,没有后件的结点称为终端结点,也称叶子结点。
4、数据结构分为两大类型:线性结构和非线性结构。
(1)线性结构(非空的数据结构)条件:1)有且只有一个根结点;2)每一个结点最多有一个前件,也最多有一个后件。
*:常见的线性结构有线性表、栈、队列和线性链表等。
(2)非线性结构:不满足线性结构条件的数据结构。
*:常见的非线性结构有树、二叉树和图等。
1.3 线性表及其顺序存储结构1、线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
线性表是由n(n?0)个数据元素组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。
全国计算机等级考试二级公共基础知识讲义
全国计算机等级考试——二级公共基础知识辅导讲义目录第一章数据结构与算法算法1步骤的一种描述。
*:算法不等于程序,也不等于计算方法。
程序的编制不可能优于算法的设计。
2、算法的基本特征(1)可行性。
针对实际问题而设计的算法,执行后能够得到满意的结果。
(2)确定性。
每一条指令的含义明确,无二义性。
并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。
(3)有穷性。
算法必须在有限的时间内完成。
有两重含义,一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。
(4)拥有足够的情报。
算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。
因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。
当输入不够或输入错误时,算法将无法执行或执行有错。
一般说来,当算法拥有足够的情报时,此算法才是有效的;而当提供的情报不够时,算法可能无效。
*:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
3、算法复杂度主要包括时间复杂度和空间复杂度。
(1)算法时间复杂度是指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。
(2数据结构的基本概念12、数据结构主要研究和讨论以下三个方面的问题:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构。
数据的逻辑结构包含:1)表示数据元素的信息;2)表示各数据元素之间的前后件关系。
(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。
数据的存储结构有顺序、链接、索引等。
1)顺序存储。
它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
由此得到的存储表示称为顺序存储结构。
2)链接存储。
它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。
二级公共基础知识计算机基础知识(必看)资料
第一部分公共基础知识第1章数据结构与算法1.1算法1.算法的基本概念(1)概念:算法是指一系列解决问题的清晰指令。
(2)4个基本特征:可行性、确定性、有穷性、拥有足够的情报。
(3)两种基本要素:对数据对象的运算和操作、算法的控制结构(运算和操作时间的顺序)。
(4)设计的基本方法:列举法、归纳法、递推法、递归法、减半递推技术和回溯法。
2.算法的复杂度(1)算法的时间复杂度:执行算法所需要的计算工作量。
(2)算法的空间复杂度:执行算法所需的内存空间。
1.2数据结构的基本概念数据结构指相互有关联的数据元素的集合,即数据的组织形式。
其中逻辑结构反映数据元素之间逻辑关系;存储结构为数据的逻辑结构在计算机存储空间中的存放形式,有顺序存储、链式存储、索引存储和散列存储4种方式。
数据结构按各元素之间前后件关系的复杂度可划分为:(1)线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构。
(2)非线性结构:不满足线性结构的数据结构。
1.3线性表及其顺序存储结构1.线性表的基本概念线性结构又称线性表,线性表是最简单也是最常用的一种数据结构。
2.线性表的顺序存储结构·元素所占的存储空间必须连续。
·元素在存储空凤的位置是按逻辑顺序存放的。
3.线性表的插入运算在第i个元素之前插入一个新元素的步骤如下:步骤一:把原来第n个节点至第i个节点依次往后移一个元素位置。
步骤二:把新节点放在第i个位置上。
步骤三:修正线性表的节点个数。
在最坏情况下,即插入元素在第一个位置,线性表中所有元素均需要移动。
4.线性表的删除运算删除第i个位置的元素的步骤如下:步骤一:把第i个元素之后不包括第i个元素的n—i个元素依次前移一个位置;步骤二:修正线性表的结点个数。
1.4栈和队列1.栈及其基本运算(1)基本概念:栈是一种特殊的线性表,其插入运算与删除运算都只在线性表的一端进行,也被称为“先进后出”表或“后进先出”表。
计算机二级公共基础知识考点
计算机二级公共基础知识考点第1章数据结构与算法考点1:算法的基本概念所谓算法是指解题方案的准确而完整的描述。
对于一个问题,如果可以通过一个计算机程序,在有限的存储空间内运行有限长的时间而得到正确结果,则称这个问题是算法可解的。
算法不等于程序,也不等于计算方法。
1 算法的基本特征(1)可行性(effectiveness):针对实际问题而设计的算法,执行后能够得到满意的结果。
(2)确定性(definiteness):算法中的每一个步骤都必须有明确的定义,不允许有模棱两可的解释和多义性。
(3)有穷性(finiteness):算法必须的有限时间内做完,即算法必须能在执行有限个步骤之后终止。
(4)拥有足够的情报:要使算法有效必须为算法提供足够的情报。
当算法拥有足够的情报时,此算法才是有效的;当提供的情报不够时,算法可能无效。
综上所述,算法是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,同时是明确的,此顺序将在有限的次数后终止。
2.算法的基本要素(1)算法中对数据的运算和操作:每个算法实际上是按解题要求从环境能进行的所有操作中选择合适的操作所组成的一组指令序列。
基本的运算和操作有以下4列类:①算术运算(包括加、减、乘、除等);②逻辑运算(包括“与”、“或”、“非”等运算);③关系运算(包括“大于”、“小于”、“等于”、“不等于”等);④数据传输(包括赋值、输入、输出等操作)。
(2)算法的控制结构:一个算法的功能不仅仅取决非于所选用的操作,而且还与各操作间的执行顺序有关。
算法中各操作之间的执行顺序称为算法的控制结构。
算法的控制结构给出了算法的的框架,它不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。
描述算法的工具通常有传统流程、N-S结构化流程图和算法描述评议等。
一个算法一般都以用顺序、选择和循环3种基本控制结核组合而成。
3.算法设计的基本方法计算机算法不同于人工处理的方法,工程上常用的算法有列举法和归纳法。
计算机二级考试公告基础知识部分第一章 数据结构与算法
第一章数据结构与算法一、内容要点(一)算法1.算法的基本概念算法是指解题方案的准确而完整的描述。
即是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,没有二义性,同时该规则将在有限次运算后可终止。
1)算法的基本特征(1)可行性由于算法的设计是为了在某一个特定的计算工具上解决某一个实际的问题而设计的,因此,它总是受到计算工具的限制,使执行产生偏差。
如:计算机的数值有效位是有限的,当大数和小数进行运算时,往往会因为有效位数的影响而使小数丢失,因此,在算法设计时,应该考虑到这一点。
(2)确定性算法的设计必须是每一个步骤都有明确的定义,不允许有模糊的解释,也不能有多义性。
例如,一个实际的问题,小宝和萍萍共有12个苹果,小宝比萍萍多4个,请问小宝和萍萍各有几个苹果?这个问题,我们可以立一个方程组x+y=12和x-y=4来求解,要求x和y的值,公式是正确的,但如何让计算能够进行计算,我们的算法不能把公式直接输进去,而应该设计出解题的步骤和过程。
即设计的算法是计算工具所能够正常解决问题的过程。
(3)有穷性算法的有穷性,即在一定的时间是能够完成的,即算法应该在计算有限个步骤后能够正常结束。
例如,在数学中的无穷级数,在计算机中只能求有限项,即计算的过程是有穷的。
(4)拥有足够的情报算法的执行与输入的数据和提供的初始条件相关,不同的输入或初始条件会有不同的输出结果,提供准确的初始条件和数据,才能使算法正确执行。
2)算法的基本要素一是数据对象的运算和操作,二是算法的控制结构。
(1)算法中对数据的运算和操作算法实际上是按解题要求从环境能进行的所有操作中选择合适的操作所组成的一组指令序列。
即算法是计算机所能够处理的操作所组成的指令序列。
(2)算法的控制结构算法的功能不仅取决于所选用的操作,而且还与各操作之间的顺序有关。
在算法中,操作的执行顺序又称算法的控制结构,一般的算法控制结构有三种:顺序结构、选择结构和循环结构。
二级公共基础知识第一章数据结构与算法
⼀.算法的基本概念计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
1.算法的基本特征:可⾏性,确定性,有穷性,拥有⾜够的情报。
2.算法的基本要素:算法中对数据的运算和操作、算法的控制结构。
3.算法设计的基本⽅法:列举法、归纳法、递推、递归、减半递推技术、回溯法。
4.算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求⼆.算法的复杂度1.算法的时间复杂度:指执⾏算法所需要的计算⼯作量2.算法的空间复杂度:执⾏这个算法所需要的内存空间三.数据结构的定义1.数据的逻辑结构:反映数据元素之间的关系的数据元素集合的表⽰。
数据的逻辑结构包括集合、线形结构、树形结构和图形结构四种。
2.数据的存储结构:数据的逻辑结构在计算机存储空间种的存放形式称为数据的存储结构。
常⽤的存储结构有顺序、链接、索引等存储结构。
四.数据结构的图形表⽰:在数据结构中,没有前件的结点称为根结点;没有后件的结点成为终端结点。
插⼊和删除是对数据结构的两种基本运算。
还有查找、分类、合并、分解、复制和修改等。
五.线性结构和⾮线性结构根据数据结构中各数据元素之间前后件关系的复杂程度,⼀般将数据结构分为两⼤类型:线性结构和⾮线性结构。
线性结构:⾮空数据结构满⾜:有且只有⼀个根结点;每个结点最多有⼀个前件,最多只有⼀个后件。
⾮线性结构:如果⼀个数据结构不是线性结构,称之为⾮线性结构。
常见的线性结构:线性表、栈、队列六.线性表的定义线性表是n 个元素构成的有限序列(A1,A2,A3……)。
表中的每⼀个数据元素,除了第⼀个以外,有且只有⼀个前件。
除了最后⼀个以外有且只有⼀个后件。
即线性表是⼀个空表,或可以表⽰为(a1,a2,……an), 其中ai(I=1,2,……n)是属于数据对象的元素,通常也称其为线性表中的⼀个结点。
⾮空线性表有如下⼀些特征:(1)有且只有⼀个根结点a1,它⽆前件;(2)有且只有⼀个终端结点an,它⽆后件;(3)除根结点与终端结点外,其他所有结点有且只有⼀个前件,也有且只有⼀个后件。
计算机二级公共基础知识完整
第一章数据结构与算法经过对部分考生的调查以及对近年真题的总结分析,笔试部分经常考查的是算法复杂度、数据结构的概念、栈、二叉树的遍历、二分法查找,读者应对此部分进行重点学习。
详细重点学习知识点:1.算法的概念、算法时间复杂度及空间复杂度的概念2.数据结构的定义、数据逻辑结构及物理结构的定义3.栈的定义及其运算、线性链表的存储方式4.树与二叉树的概念、二叉树的基本性质、完全二叉树的概念、二叉树的遍历5.二分查找法6.冒泡排序法算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应该了解算法中对数据的基本运算。
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。
2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。
(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。
描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。
一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。
考点2 算法复杂度考试链接:考点2在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应该识记算法时间复杂度及空间复杂度的概念。
1.算法的时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。
这表明使用绝对的时间单位衡量算法的效率是不合适的。
撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依赖于问题的规模(通常用整数n表示),它是问题规模的函数。
计算机二级数据结构与算法
A B C E D F G H
树形结构 —— 结点间具有分层次的连接关系
35
1.3 线性表
1.3.1 线性表的定义 线性表是n个元素的有限序列,它们之间的 关系可以排成一个线性序列: a1,a2,…… ,ai,…… ,an 其中n称作表的长度,当n=0时,称作空表。
36
线性表的特点: 1.线性表中所有元素的性质相同。 2.除第一个和最后一个数据元素之外,其它数据元 素有且仅有一个前件和一个后件。第一个数据元 素无前件,最后一个数据元素无后件。 3.数据元素在表中的位置只取决于它自身的序号。 在线性表上常用的运算有: 初始化、求长度、取元素、修改、 前插、删除、检索、排序。
首地址 ADR(a1)
ADR(a1) +k
ADR(a1) + (i-1)* k
元素ai …….. 每个元素所占用 的存储单元个数
ADR(a1) + (n-1)* k
元素an
ADR(ai) =ADR(a1) + (i-1)* k
39
线性表的插入和删除运算示意图
x
a1 a2 ….. ai-1 ai ai+1 … an
21
数据元素(Data Element)
现实世界中客观存在得一切个体或个体相关 的操作都可以抽象为数据元素。
如:四季的名称:春、夏、秋、冬由季节抽 象而来,可以作为季节的数据元素。
同理,父亲、儿子、女儿可以作为家庭成员 的数据元素。 简单的说,数据结构是指相互有关联的数据 元素的集合。
22
数据元素(Data Element)
基本运算: 压(进)栈:PUSH 出栈:POP 读栈顶元素
top a a 22
a a11
计算机二级公共基础知识总结详细版本[精]
全国计算机等级考试二级公共基础知识总结第一章数据结构与算法1.1 算法1 算法的基本特征:可行性;确定性,有穷性;拥有足够的情报。
,2 确定性:算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;3 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
5 算法时间复杂度是指执行算法所需要的计算工作量。
可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
6 算法时间复杂度取决于问题的规模和待处理的数据的初态。
7 如果算法P调用另一个算法Q,而算法Q又调用算法P8 工程上常用的分治法是减半递推技术910如果查找的x一定在数组中,此时q=1,则A(n)=(n+1)/2。
也就是说,在这种情况下,用顺序搜索法在长度为n 的一维数组中查找值为x的元素,在平均的情况下需要检查数组中一半的元素。
如果已知需要查找的x有一半机会在数组中,此时q=1/2。
则A(n)=[(n+1)/4]+n/2=3n/4。
x不在数组中时,A(n)=n。
11下面程序段的时间复杂度是for(int i=0;i<n;i++)for(int j=1;j<=m;j++)A[i][j]=0;语句的频度指的是该语句重复执行的次数,一个算法中所有语句的频度之和构成了该算法的运行时间。
本例中语句:A[i][j]=0;的频度是n*m,所以该程序段的时间复杂度是:O(m*n)1213 一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程较慢。
141.2 数据结构的基本基本概念1数据结构研究的三个方面:;数据运算。
2逻辑结构是数据元素间关系的描述,与所用的计算机无关3数据的逻辑关系是指数据元素的关联。
4数据的不可分割的基本单位是数据项。
56 一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、7。
索引等存储结构。
而采用不同的存储结构,其数据处理的效率是不同的。
计算机二级Ms-office-第一部分-公共基础知识——数据结构与算法
计算机二级Msoffice第一部分公共基础知识——数据结构与算法1.下列叙述中正确的是()。
()A、算法的复杂度与问题的规模无关B、算法的优化主要通过程序的编制技巧来实现C、对数据进行压缩存储会降低算法的空间复杂度(正确答案)D、数值型算法只需考虑计算结果的可靠性答案解析:参考解析:为了降低算法的空间复杂度,主要应减少输入数据所占的存储空间以及额外空间,通常采用压缩存储技术,C选项叙述正确。
算法的计算工作量是用算法所执行的基本运算次数来度量的,而算法所执行的基本运算次数是问题规模(通常用整数)表示的函数,A选项叙述错误。
算法的复杂度与程序的编制无关,B选项叙述错误。
算法需要考虑可行性、确定性、有穷性等,D选项叙述错误。
2.设有一个栈与一个队列的初始状态均为空。
现有一个序列A,B,C,D,E,F,G,H。
先分别将序列中的前4个元素依次入栈,后4个元素依次入队;然后分别将栈中的元素依次退栈,再将队列中的元素依次退队。
最后得到的序列为()。
()A、A,B,C,D,E,F,G,HB、A,B,C,D,H,G,F,EC、D,C,B,A,H,G,F,ED、D,C,B,A,E,F,G,H(正确答案)答案解析:参考解析:栈按先进后出的原则组织数据,所以入栈最早的元素最后出栈。
队列按先进先出的原则组织数据,所以入队最早的元素最先退队。
入栈的顺序为A,B,C,D,则退栈的顺序为D,C,B,A;入队的顺序为E,F,G,H,退队的顺序为E,F,G,H。
3.设某棵树的度为3,其中度为3,2,1的结点个数分别为3,0,4。
则该树中的叶子结点数为()。
()A、6B、7(正确答案)C、8D、不可能有这样的树答案解析:参考解析:假设叶子结点个数为n。
这棵树的总结点数为度为3的结点数+度为2的结点数+度为1的结点数+度为0的结点数,即为3+0+4+n。
再根据树的性质:树的总的结点数为树中所有结点的度数之和再加1,则总结点数为3x3+2x0+1x4+0xn+1。
