计算机等级考试二级公共基础知识第一章.docx
《计算机等级考试二级公共基础知识第一章.docx》由会员分享,可在线阅读,更多相关《计算机等级考试二级公共基础知识第一章.docx(12页珍藏版)》请在冰豆网上搜索。
![计算机等级考试二级公共基础知识第一章.docx](https://file1.bdocx.com/fileroot1/2023-2/26/c39299d0-8f57-4542-bb94-bc3125f3bdf6/c39299d0-8f57-4542-bb94-bc3125f3bdf61.gif)
计算机等级考试二级公共基础知识第一章
第一章数据结构与算法
一、教学目标
1、了解算法的基本概念。
2、了解数据结构的基本概念。
3、了解线性表及其顺序存储结构。
4、理解栈和队列的基础知识。
5、了解线性链表。
6、了解树与二叉树的基本概念,掌握二叉树的性质及遍历。
7、了解查找技术。
8、了解排序技术。
二、教学方法
1、重点内容与常考内容重点讲解。
2、以实例如真题来讲解程序设计中的重点与难点。
三、重点内容
1、算法的时间复杂度与空间复杂度。
2、判断线性结构与非线性结构。
3、栈和队列的基本知识,计算栈和队列中的元素个数。
4、二叉树的基本性质和二叉树的遍历。
5、查找方法与排序技术中的最坏情况次数。
四、教学内容
1.1算法
1.1.1算法的基本概念
算法是指解决问题方案的准确而完整的描述。
1、算法的基本特征:
(理解+记忆)
(1)可行性
(2)确定性
算法的确定性,是指算法中的每一个步骤都必须有明确定义的,不允许有模棱两可的解释,也不允许有多义性。
(3)有穷性
算法的有穷性,是指算法必须在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
(4)有效性
所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
2、算法的基本要素:
(1)算法中对数据对象的运算和操作。
(2)算法的控制结构:
顺序、选择、循环(记忆)
3、算法设计基本方法:
(了解)
(1)列举法
(2)归纳法
(3)递推
(4)递归
(5)减半递推技术
(6)回溯法
1.1.2算法的复杂度
算法的复杂度主要包括时间复杂度和空间复杂度。
1、算法的时间复杂度,是指执行算法所需要的计算工作量。
算法的工作量用算法所执行的基本运算次数来度量。
算法执行的基本次数与问题的规模有关。
分析算法工作量的方法:
(了解)
(1)平均性态
(2)最坏情况复杂性
所谓最坏情况分析,是指在规模为n时,算法所执行的基本运算的最大次数。
2、算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
算法的时间复杂度与空间复杂度不一定相关。
1.2数据结构的基本概念
1.2.1什么是数据结构
简单地说,数据结构是指相互有关联的数据元素的集合。
例如:
(1)一年四季的季节名
春、夏、秋、冬
(2)表示家庭成员的各成员
父亲、儿子、女儿
在数据处理领域中,通常把数据元素之间的这种固有的关系简单地用前后件关系来描述。
前后件关系是数据元素之间的一个基本关系。
一般来说数据元素之间的任何关系都可以用前后件关系来描述。
1、数据的逻辑结构
所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构。
2、数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称为数据的物理结构)。
注意:
一种数据的逻辑结构根据需要可以表示成多种存储结构,也就是说,
数据的逻辑结构与存储结构不是一一对应的。
常用的数据存储结构有:
顺序、链接、索引等。
1.2.2数据结构的图形表示
上图为一年四季的数据结构的图形表示
上图为家庭成员辈分关系数据结构的图形表示
1、结点的基本概念【了解】
根结点:
在数据结构中,没有前件的结点称为根结点
叶子结点(终端结点):
没有后件的结点称为叶子结点。
内部结点:
除了根结点与终端结点外的其他结点一般称为内部结点。
2、运算【了解】
(1)插入运算:
在一个数据结构中增加一个新结点。
(2)删除运算:
删除数据结构中的某个结点。
插入与删除运算是数据结构的两种基本运算。
1.2.3线性结构与非线性结构
如果一个非空的数据结构满足以下两个条件:
(1)有且只有一个根结点;
(2)每一个结点最多有一个前件,也最多有一个后件。
则该数据结构为线性结构。
线性结构又称线性表。
一个数据结构不是线性结构,则称之为非线性结构。
线性结构与非线性结构都可以是空的数据结构。
注意:
【记忆】
(1)线性结构包括:
线性表、栈、队列、循环队列、线性链表
(2)非线性结构:
树、二叉树
1.3线性表及其顺序存储结构(了解)
1.3.1线性表的基本概念
线性表是最简单、最常用的一种数据结构。
(线性结构)
1.3.2线性表的顺序存储结构
在计算机中存放线性表,一种最简单的方法是顺序存储,也称为顺序分配。
线性表的顺序存储结构具有以下两个基本特点:
(1)线性表中所有元素所占的存储空间是连续的;
(2)线性表中个数据元素在存储空间中是按照逻辑顺序依次存放的。
在程序设计语言中,通常定义一个一维数组来表示线性表的顺序存储空间。
1.3.3顺序表的插入运算(简单了解)
1.3.4顺序表的删除运算(简单了解)
1.4栈和队列
1.4.1栈及其基本运算
1、什么是栈
栈是限定在一端进行插入与删除运算的线性表。
【记忆】
数据组织原则:
“先进后出”或“后进先出”【记忆】
栈具有记忆作用。
用指针top来指向栈顶的位置(栈顶元素),用指针bottom指向栈底(栈底元素)
2、栈的顺序存储结构及其运算(了解)
在程序设计语言中,用一维数组作为栈的顺序存储空间。
栈的基本运算:
(1)入栈运算
(2)退栈运算
(3)读栈顶元素
附加内容:
栈中元素个数的计算,m表示容量,b表示bottom,t表示top
大—小+1=栈中元素个数
1.4.2队列及其基本运算
1、什么是队列
队列是指允许在一端进行插入,而在另一端进行删除的线性表。
队列的数据组织原则是:
“先进先出”或“后进后出”
用队头指针front指向队头元素的下一个位置,队尾指针rear指向队尾元素。
在程序设计语言中,用一维数组作为队列的顺序存储空间。
2、循环队列及其与运算
在实际应用中,队列的顺序存储结构一般采用循环队列的形式。
(1)入队运算
(2)退队运算
附加内容:
队列中元素个数的计算。
m表示容量,f表示队头指针,r表示队尾指针
(1)f<r元素个数=r-f
(2)f>=r 元素个数=m-f+r
1.5线性链表(了解即可)
1.5.1线性链表的基本概念
1、线性链表
线性表的链式存储结构称为线性链表。
2、带链的栈
3、带链的队列
1.5.2线性链表的基本运算
1、在线性链表中查找指定元素
2、线性链表的插入
3、线性链表的删除
1.5.3循环链表及其基本运算
1.6树与二叉树(重点)
1.6.1树的基本概念
树是一种简单的非线性结构。
树结构的基本术语:
(了解)
1、根结点:
在树结构中,没有前件的结点只有一个,称为树的根
2、子结点:
每一个结点的后件称为该结点的子结点
3、叶子结点:
没有后件的结点
4、结点的度:
结点拥有后件的个数。
5、树的度:
所有结点中的最大的度称为树的度。
6、树的深度:
树分层。
树的最大层次称为树的深度。
7、子树:
以某一个的子结点为根构成的树称为该结点的一棵子树。
1.6.2二叉树及其基本性质
1、什么是二叉树
二叉树有以下两个特点:
(1)非空二叉树只有一个根结点;
(2)每一个结点最多有两棵子树,且分别称为该结点的左子树和右子树。
结点的度最大是2,树的度最大是2。
2、二叉树的基本性质
性质1在二叉树的第k层上,最多有2k-1(k>=1)个结点
性质2深度为m的二叉树最多有2m-1个结点
性质3在任意一棵二叉树中,度为0的点(即叶子结点)总是比度为2的结点多一个。
n0=n2+1
性质4具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示log2n的整数部分。
3、满二叉树与完全二叉树
(1)满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
(2)完全二叉树
除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
满二叉树也是完全二叉树,而完全二叉树一般不是满二叉树。
完全二叉树还具有以下两个性质:
性质5具有n个结点的完全二叉树的深度为[log2n]+1。
性质6设完全二叉树共有……
另外:
(1)完全二叉树度为1的结点个数为0或1。
n1=0,1
n0=n2+1
n=n0+n1+n2
(2)完全二叉树结点总个数为n,n0为叶子结点的个数,则
a.n为偶数,n0=n/2
b.n为奇数,n0=(n+1)/2
1.6.3二叉树的存储结构
二叉树通常采用链式存储结构。
1.6.4二叉树的遍历【掌握】
二叉树的遍历是指不重复地访问二叉树中的所有结点。
在先左后右的原则下,根据访问根结点的次序,二叉树的遍历有三种遍历的方法。
1、前序遍历:
根结点→左子树→右子树
2、中序遍历:
左子树→根结点→右子树
3、后序遍历:
左子树→右子树→根结点
遍历结果:
(1)前序遍历:
ABDECF
(2)中序遍历:
DBEAFC
(3)后序遍历:
DEBFCA
1.7查找技术
对于长度为n的有序线性表
1.7.1顺序查找
顺序查找最坏情况下需要比较n次。
1.7.2二分法查找
二分法查找(对分查找)最坏情况下需要比较log2n次。
1.8排序技术
1.8.1交换类排序法
1、冒泡排序法
最坏情况下需要比较次数为
n(n-1)/2
2、快速排序法
最坏情况下需要比较次数为
n(n-1)/2
1.8.2插入类排序法
1、简单插入排序法
最坏情况下需要比较次数为
n(n-1)/2
2、希尔排序法
最坏情况下需要比较次数为
O(n1.5)
1.8.3选择类排序法
1、简单选择排序法
最坏情况下需要比较次数为
n(n-1)/2
2、堆排序法
最坏情况下需要比较次数为
O(nlog2n)
总结:
1、最坏情况下,需要比较n(n-1)/2
次的排序方法有:
冒泡排序法、快速排序法、简单插入排序、简单选择排序。
2、希尔排序法,最坏情况下需要比较的次数是O(n1.5)
3、堆排序法,最坏情况下需要比较的次数是O(nlog2n)。