全国计算机等级考试-二级公共基础知识(ppt100).ppt
《全国计算机等级考试-二级公共基础知识(ppt100).ppt》由会员分享,可在线阅读,更多相关《全国计算机等级考试-二级公共基础知识(ppt100).ppt(99页珍藏版)》请在三一办公上搜索。
1、全国计算机等级考试,二级公共基础知识,天津财经大学珠江学院信息科学与技术系 韩梅,第一章 数据结构与算法(30%),考试大纲1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插
2、入类排序)。,知识点归纳,算法的基本概念所谓算法是指解题方案的准确而完整的描述。严格来说,一个算法必须具有以下五个主要特征:有穷性确定性可行性输入输出综上,所谓算法,是一组严格定义运算顺序的规则,而且每一个规则都是有效且明确的,此顺序将在有限的次数终止。,算法的基本概念,算法的组成要素算法中对数据的运算和操作算法的控制结构算法设计基本方法列举法归纳法递推递归减半递推回溯法,算法的复杂度,算法的复杂度可分为时间复杂度和空间复杂度,是衡量算法优劣的量度。1.算法的时间复杂度算法的时间复杂度是指执行算法所需要的工作量。一般情况下,算法中的基本操作重复执行的次数是问题规模n的某个函数f(n)。算法的时
3、间量度记作:T(n)=O(f(n),表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称为算法的(渐进)时间复杂度。,算法的复杂度,何估算算法的时间复杂度?任何一个算法都是由一个“控制结构”和若干“原操作”组成的,因此一个算法的执行时间可以看成是所有原操作的执行时间之和(原操作(i)的执行次数原操作(i)的执行时间)则算法的执行时间与所有原操作的执行次数之和成正比。从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作在算法中重复执行的次数作为算法时间复杂度的依据。这种衡量效率的办法所得出的不是时间量,而是一种增长趋势的量度。它与软硬件环境无关,只暴露算法本身执
4、行效率的优劣。,算法的复杂度,算法的空间复杂度算法的空间负杂度是指执行这个算法所需要的内存空间。空间复杂度作为算法所需存储空间的量度,记作:S(n)=O(g(n),其中n为问题的规模,表示随问题规模的增大,算法运行所需存储量的增长率与g(n)的增长率相同。,数据结构,利用计算机进行数据处理是计算机应用的一个重要领域。数据结构主要研究和讨论以下三个方面的问题:数据集合中各数据元素之间的逻辑关系,即数据的逻辑结构。在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。对各种数据结构进行的运算。,数据的逻辑结构,数据逻辑结构是对数据元素之间存在的逻辑关系的描述,它可以用一个数据元素的
5、集合和定义在此集合上的若干关系表示。与数据在计算机中的存储位置无关,是独立于计算机的。,数据的存储结构,数据的存储结构是数据元素及其关系在计算机存储器中的表示。存储结构的主要内容是指在存储空间中使用一个存储结点来存储一个数据元素,在存储空间中建立各存储结点之间的关联,来表示数据元素之间的逻辑关系。常见的存储结构:顺序存储结构链式存储结构索引存储结构散列存储结构,线性结构和非线性结构,线性结构在数据元素的非空有限集合中,线性结构的逻辑特征如下:存在一个唯一的被称为“第一个”的数据元素存在一个唯一的被称为“最后一个”的数据元素除第一个之外,集合中的每个数据元素均有且只有一个直接前驱除最后一个之外,
6、集合中的每个数据元素均有且只有一个直接后继非线性结构非线性结构的逻辑特征是:一个结点可能有多个直接前驱和直接后继,树和图都属于非线性结构。,线性表,通常以下列 n 个数据元素的序列”表示线性表:(a1,a2,.,ai,.,an)序列中数据元素的个数 n 定义为线性表的表长;n=0 时的线性表被称为空表。称 i 为ai在线性表中的位序。,线性表的顺序存储,线性表的顺序存储结构用一组地址连续的存储单元依次存放线性表中的数据元素,即以“存储位置相邻”表示“位序相继的两个数据元素之间的前驱和后继的关系,并以表中第一个元素的存储位置作为线性表的起始地址,称作线性表的基地址。,所有数据元素的存储位置均可由
7、第一个数据元素的存储位置得到 ADR(ai)=ADR(a1)+(i-1)C 基地址 一个数据元素所占存储量,线性表的插入和删除运算,插入运算是指在线性表的某个指定位置增加一个新结点。一般情况下,要在第i(1in)个元素之前插入一个新元素时,首先要从最后一个元素开始,直到第i个元素之间共n-i+1个元素依次向后移动一个位置,然后将新元素插入到第i项。删除运算是指撤销结构中的某个结点。一般情况,要删除第i(1in)个元素,要从第i+1个元素开始,直到第n个元素,共n-i个元素依次向前移动一个位置。,栈,栈是限定仅在表的一端进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶,另一端称为栈底。栈
8、顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入,也是最后被删除的元素。因此,栈是一种后进先出的线性表。通常用指针top指示栈顶位置,用指针bottom指示栈底位置。,栈的顺序存储及运算,用一维数组S(1:m)作为栈的顺序存储空间,m为栈的最大容量。top=0表示栈为空,top=m表示栈满。栈的操作入栈:在栈顶位置插入一个新元素,栈顶指针top加1。退栈:取出栈顶元素并赋值给一个指定的变量,栈顶指针top减1。取栈顶元素:将栈顶元素的值赋给一个指定的变量,不删除栈顶元素,栈顶指针不变。,队列,队列是一种先进先出的线性表,它只允许在表的一端插入元素(队尾),在另一端删
9、除元素(队头)。通常定义头指针front指向队头元素的前一个位置,定义尾指针rear指向队尾元素的位置。队列是一种先进先出的数据结构。向队尾插入一个元素的操作称为入队,从队头删除一个元素的操作称为退队。,循环队列,将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。循环队列初始状态为空,即front=rear=m。入队操作时,rear加1,若rear=m+1,则置rear=1;退队操作时,front加1,若front=m+1,则置front=1。在循环队列为空或为满时,均有front=rear,因此需要设置标志s进行区分,定义s=0表示队列为空,s=1表示队列非空。,单链表,线性
10、表的链式存储结构的特点是用一组任意的存储单元(可以连续,也可以不连续)存储线性表的数据元素,为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息(数据域)之外,还需要存储其后继元素的存储位置信息(指针域)。指针域中存储的信息称为指针或链,N个结点链接成一个链表,即为线性表的链式存储结构。由于结点中只包含一个指针域,故称为单链表。,单链表,通常以单链表中第一个数据元素的存储地址作为作为单链表的地址,称为头指针。整个链表的存储必须从头指针开始(顺序存取),头指针指示链表中第一个结点的存储位置。最后一个数据元素没有直接后继,其指针域为空。,单链表的
11、插入和删除,双向链表和循环链表,在双向链表中的结点包含两个指针域,其中一个指向直接后继,另一个指向直接前驱。循环链表的特点是表中最后一个结点的指针域指向第一个结点,整个链表成为一个由链指针相链接的环。据此,从表中任一节点出发均可找到表中其它结点。在循环链表中增加了一个表头结点,其指针域指向第一个元素结点,头指针则指向头结点。,树及其基本概念,树是一种简单的非线性结构,在树中,所有的数据元素之间具有明显的层次性关系。树是(n0)个结点的有限集合,在任意一棵非空树中:(1)有且仅有一个特定的结点称为根结点。(2)当n1时,其余的结点可分为m个互不相交的子集T1,T2,Tm,其中每个有限子集本身又是
12、一棵树,并且称为根的子树。集合为空的树简称为空树;树中的元素称为结点。,树的主要术语,结点的度:结点拥有的子树数。叶节点(终端结点):度为0的结点。双亲、孩子和兄弟:结点的子树的根节点称为该结点的孩子,该结点称为孩子结点的双亲结点。同一个双亲结点的孩子互称为兄弟。层次:结点的层次从根开始定义,根为第一层,根的孩子为第二层。深度:树中结点的最大层次称为树的深度或高度。,二叉树,二叉树是n(n0)个数据元素的有限集,它或为空集,或者含有唯一的称为根的元素,且其余元素分成两个互不相交的子集,每个子集自身也是一棵二叉树,分别称为根的左子树和右子树。二叉树是另一种树型结构,其特点是每个结点至多有两棵子树
13、,并且二叉树的子树有左右之分,其顺序不能任意颠倒。,二叉树的基本性质,性质1 在二叉树的第i层上至多有2i-1个结点(i1)性质2 深度为k的二叉树至多有2k-1个结点(k1)性质3 对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则:n0=n2+1性质4 具有n个结点的二叉树,其深度至少为log2n+1,满二叉树和完全二叉树,满二叉树除最后一层外,每一层上的所有结点都有两个子节点,也就是说每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。完全二叉树除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若
14、干结点。具有n个结点的完全二叉树,其深度为log2n+1。从以上定义可知,满二叉树也是完全二叉树,反之则不然。,二叉树的基本性质,性质5 如果对一棵有 n 个结点的完全二叉树(其深度为log2n+1)的结点按层序(从第1层到第log2n+1 层,每层从左到右)从1起开始编号,则对任一编号为 i 的结点(1in),则:(1)如果 i=1,则编号为 i 的结点是二叉树的根,无双亲;如果 i1,则其双亲结点 parent(i)的编号是i/2。(2)如果 2in,则编号为 i 的结点无左孩子(编号为 i 的结点为叶子结点);否则其左孩子结点 lChild(i)的编号是 2i。(3)如果 2i+1n,则
15、编号为 i 的结点无右孩子;否则其右孩子结点 rChild(i)的编号是结点 2i+1。,二叉树的链式存储结构,在二叉树的链式存储结构中,每个结点设置三个域,即数据域,左指针域和右指针域,两个指针域分别存储左右子树根节点的存储位置,即指针。,二叉树的链式存储结构,二叉树的遍历,二叉树的遍历指不重复地访问二叉树的所有结点。从二叉树的结构定义得知,二叉树是由根结点、左子树和右子树三部分构成,则遍历二叉树的操作可分解为访问根结点、遍历左子树和遍历右子树三个子操作,并且由二叉树的递归定义可知,遍历左子树和遍历右子树可如同遍历二叉树一样递归进行。,二叉树的遍历,先序遍历:ABDEGHCFIJ中序遍历:D
16、BGEHACIJF后序遍历:DGHEBJIFCA,查找,查找是指在一个给定的数据结构中查找某个指定的元素。顺序查找顺序查找一般是指在线性表中查找指定元素,基本方法如下:从线性表的第一个元素开始,依次将线性表中的元素与被查找元素进行比较,若相等则表示找到,即查找成功;若线性表中的所有元素与被查找元素都不相等,则查找失败。如果线性表为无序表,即表中元素的排列是无序的,则不管线性表采用顺序存储还是链式存储,都必须使用顺序查找。如果线性表有序,但采用链式存储结构,则也必须使用顺序查找。,查找,二分查找(折半查找)二分查找法只适用于顺序存储的有序表。先确定待查目标元素所在范围(区间),然后逐步缩小范围直
17、至找到该元素,或者当查找区间缩小到0也没有找到目标元素为止。查找过程中,给定值首先和处于待查区间中间位置的关键字进行比较,若相等,则查找成功,否则将查找区间缩小到前半个区间 或 后半个区间 之后继续进行查找。,折半查找,二分查找,排序,排序是指将一个无序序列整理成按值递增或递减(本章均采用递增规则)的有序序列。排序可以在各种不同的存储结构上实现,本章所介绍的算法以顺序存储的线性表为排序对象,在程序设计语言中就是一维数组。排序的算法种类很多,主要包括交换类排序、插入类排序、选择类排序等。,交换类排序,冒泡排序基本思想:从表头开始扫描线性表,在扫描的过程中依次比较相邻两个元素的大小,若前面的元素大
18、于后面的元素,则交换它们的位置。显然,在扫描过程中,不断地将将相邻元素间较大的向后移动,最后将线性表中最大的元素移到表尾。然后,从后向前扫描剩下的线性表,同样在扫描的过程中依次比较相邻两个元素的大小,若后面的元素小于前面的元素,则交换位置。在扫描过程中,不断地将将相邻元素间较小的向前移动,最后将线性表中最小的元素移到表头。对剩下的线性表重复上述过程,直到剩余线性表为空为止,此时线性表变为有序。,冒泡排序示例,第一遍(从前向后),第一遍(从后向前),第二遍(从前向后),第二遍(从后向前),快速排序,基本思想:从线性表中选取一个元素,设为T,将线性表后面小于T的元素移动到前面,将前面大于T的元素移
19、动到后面,将线性表分为两个部分(子表),T放到分界线的位置,这个过程称为线性表的分割,通过一次分割,就以T为分界将线性表分为两个子表,前面的子表中的所有元素均不大于T,而后面子表中的元素均不小于T。按照上述原则对子表继续进行分割,直到子表为空,则整个线性表有序。,快速排序,操作步骤:首先,在表的第一个元素、最后一个元素和中间元素中选取一个中值,设为P(k),并将P(k)赋值给T,再将表中的第一个元素移到P(k)的位置。设两个指针i,j分别指向表的起始和最后位置,反复操作以下两步:将j逐渐减小,并逐次比较P(j)和T,直到发现一个P(j)T为止,并将P(i)移到 P(j)的位置上。上述两步操作交
20、替进行,直到i和j指向同一个位置,再将T移动到P(i)的位置上,完成一次分割。,31,暂存枢轴记录T:,12,12,68,68,23,23,45,45,31,31,快速排序的一次分割过程,31,插入类排序,简单插入排序基本思想:将待排序列表分成两部分:已排序部分和未排序部分。每次扫描将未排序列表中的第一个元素取出并插入到已排序列表中的合适位置。包含n个元素的列表最多需要n-1次扫描。,简单插入排序示例,原始序列,第1趟,第2趟,第3趟,第4趟,第5趟,希尔排序,基本思想:将整个无序序列分割成若干个小的子序列分别进行插入排序。子序列的分割方法:将相隔某个增量h的元素构成一个子序列,在排序过程中,
21、逐次减小这个增量,最后当h减到1时,进行一次插入排序,排序完成。增量序列一般取ht=n/2k(k=1,2log2n),希尔排序,h=6,h=1,h=3,完成,选择类排序,简单选择排序基本思想:将待排序列表分成两部分:已排序部分和未排序部分。找到未排序部分中的最小元素并把它和未排序部分中的第一个元素进行交换。经过一次选择和交换,列表中已排序部分增加一个元素,未排序部分减少一个元素。每次把一个元素从未排序部分移动到已排序部分称为完成一次分类扫描或称为一趟排序。一个包含n个元素的列表需要进行n-1次扫描完成排序。,简单选择排序示例,原始序列,第1趟,第2趟,第3趟,第4趟,第5趟,第二章 程序设计基
22、础(15%),考试大纲1.程序设计方法与风格。2.结构化程序设计。3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。,知识点归纳,程序设计方法程序设计是一门技术,需要相应的理论、方法和工具来支持。就程序设计方法和技术的发展而言,主要经历了结构化的程序设计和面向对象的程序设计阶段。在程序设计中,通常采用“自顶向下,逐步求精”的方法,即把一个模块的功能逐步分解,细化为一系列具体的步骤,进而转换成一系列用某种程序设计语言编写的程序。,程序设计风格,除了程序设计设计方法和技术之外,程序风格也是非常重要的。良好的程序设计风格概括起来包括以下及格方面:源程序文档化数据说明的方法语句的结构输入和输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 公共 基础知识 ppt100
链接地址:https://www.31ppt.com/p-5233549.html