二级公共基础知识.ppt
《二级公共基础知识.ppt》由会员分享,可在线阅读,更多相关《二级公共基础知识.ppt(113页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、二级公共基础知识,第一章 数据结构基础,2,内容提要,算法:算法的基本概念、算法复杂度 数据结构的基本概念:什么是数据结构、 数据结构的图形表示、 线性结构与非线性结构 线性表及其顺序存储结构:线性表的基本概念、 顺序存储结构、插入运算、删除运算 栈和队列:栈及其基本运算、队列及其基本运算 线性链表:基本概念、基本运算、循环链表及其基本运算 树与二叉树:树的基本概念、二叉树及其基本性质、 二叉树的存储结构、二叉树的遍历 查找技术: 顺序查找、二分法查找 排序技术:交换类排序法、 插入类排序法、选择类排序法,1.1 算法,4,1.1.1 算法的基本概念,算法是解题方案的准确而完整的描述,它不等于
2、程序,也不等计算方法。 1算法的基本特征 可行性(effectiveness) 确定性(definiteness) 有穷性(finiteness) 拥有足够的情报 2算法的基本要素 算法中对数据的运算和操作 算术运算:包括加、减、乘、除等) 逻辑运算:包括“与”、“或”、“非”等运算) 关系运算:包括“大于”、“小于”、“等于”、“不等于”等) 数据传输:包括赋值、输入、输出等操作 算法的控制结构,5,1.1.1 算法的基本概念,3算法设计的基本方法 列举法 归纳法 递推 递归 减半递推技术 回溯法,6,1.1.2 算法复杂度,算法复杂度:时间复杂度、空间复杂度 1算法的时间复杂度 执行算法所
3、需要的计算工作量 与下列因素有关: 书写算法的程序设计语言 编译产生的机器语言,代码质量 机器执行指令的速度 问题的规模,7,1.1.2 算法复杂度,问题的规模函数 算法的工作量=f(n) 算法中基本操作重复执行的频率T(n),是问题规模n的某个函数f(n),记作: T(n)=O(f(n) 记号“O”读作“大O”。表示随问题规模n的增加,算法执行时间的增长率和f(n)相应增加。 常见算法复杂度: O(1):常数阶 O(n):作线性阶 O(n2):平方阶 O(n3):立方阶 O(logn):对数阶 O(2n):指数阶,8,1.1.2 算法复杂度,nn矩阵相乘算法: 时间复杂度为O(n3)。,9,
4、1.1.2 算法复杂度,分析算法的工作量两种方法: 平均性态 最坏情况复杂性,10,1.1.2 算法复杂度,2算法的空间复杂度 算法执行过程中所需的最大存储空间 存储量包括以下三部分 算法程序所占的空间 输入的初始数据所占的存储空间 算法执行过程中所要的额外空间 算法空间复杂度可定义为: S(n)=O(f(n) 原地工作(in place)的算法:记作O(1) 压缩存储技术,1.2 数据结构的基本概念,12,1.2.1 什么是数据结构,1数据结构研究的主要内容 数据的逻辑结构 数据的存储结构 对各种数据结构进行的运算 2研究数据结构目的 提高数据处理的速度 尽量节省在数据处理过程中所占用的计算
5、机存储空间,13,1.2.1 什么是数据结构,数据结构,14,1.2.1 什么是数据结构,3数据结构的定义 相互有关联的数据元素的集合 数据元素之间的关系可以用前后件关系来描述 一个数据结构应包含以下两方面信息: 表示数据元素的信息 表示各数据元素之间的前后件关系,15,1.2.1 什么是数据结构,4数据的逻辑结构 对数据元素之间的逻辑关系的描述 只抽象地反映数据元素之间的逻辑关系,与计算机中的存储无关 两个要素: 数据元素的集合,通常记为D; 前后件关系,通常记为R 一个数据结构B可以表示为: B=(D,R),16,1.2.1 什么是数据结构,5数据的存储结构 数据的逻辑结构在计算机存储空间
6、中的存放形式 常用的存储结构: 顺序 链式 索引 一种数据结构可根据需要采用不同的存储结构。采用不同的存储结构,其数据处理的效率是不同,17,1.2.2 数据结构的图形表示,数据结点:用方框表示 根结点、终端结点 前后件关系:用有向线段表示 基本运算: 插入运算 删除运算 查找、分类、合并、分解、复制、修改、,18,1.2.3 线性结构与非线性结构,空的数据结构:一个数据元素都没有 线性结构 如果一个非空数据结构满足下列两个条件: 有且只有一个根结点; 每一个结点最多有一个前件,也最多有一个后件。 常见的线性结构有:线性表、栈与队列、线性链表 非线性结构 如果一个数据结构不是线性结构 常见的非
7、线性结构有:树、二叉树、图,1.3 线性表及其顺序存储结构,20,1.3.1 线性表的基本概念,线性表:由n(n0)个相同类型数据元素构成的有限序列: n定义为线性表的表长;n=0 时的线性表被称为空表。称i为在线性表中的位序。 例如: 英文大写字母表 (A,B,C,D,E,F,X,Y,Z) 同一花色的13张扑克牌 (2,3,4,5,6,7,8,9,10,J,Q,K,A),21,1.3.1 线性表的基本概念,线性表的结构特征 数据元素在表中的位置由序号决定,数据元素之间的相对位置是线性的; 对于一个非空线性表,有且只有一个根结点a1,它无前件,有且只有一个终端结点an,它无后件,除根结点与终端
8、结点外,其他所有结点有且只有一个前件,也有且只有一个后件。 线性表的存储结构 顺序存储 链式存储,22,1.3.2 线性表的顺序存储结构,两个基本特点: 线性表中所有元素所占的存储空间是连续的。 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 存储示意图,23,1.3.3 顺序表的插入运算,24,1.3.4 顺序表的删除运算,25,顺序表的插入和删除分析,插入算法的分析 假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能性均等,则平均移动元素的个数为: 删除算法的分析 在进行删除操作时,若假定删除每个元素的可能性均等,则平均移动元素的个数为: 分析结论
9、 顺序存储结构表示的线性表,在做插入或删除操作时,平均需要移动大约一半的数据元素。当线性表的数据元素量较大,并且经常要对其做插入或删除操作时,这一点需要值得考虑,1.4 栈和队列,27,1.4.1 栈及其基本运算,1栈的定义 栈(stack):一种只允许在表的一端进行插入或删除操作的特殊的线性表 栈顶(top) :允许进行插入与删除操作的一端 栈底(bottom):不允许插入与删除操作的另一端 先进后出(FILO)或后进先出(LIFO)的线性表,28,1.4.1 栈及其基本运算,2栈的顺序存储及其运算 top=0:栈空 top=m:栈满 栈的基本运算 入栈运算 退栈运算 读栈顶元素,29,1.
10、4.2 队列及其基本运算,1队列的定义 限定只能在表的一端进行插入和在另一端进行删除操作的线性表 队尾(rear):允许插入的一端 队头(front):允许删除的另一端 先进先出(FIFO)表或后进后出(LILO)线性表 基本操作 入队运算:往队列的队尾插入一个元素,队尾指针rear的变化 退队运算:从队列的排头删除一个元素,队头指针front的变化,30,1.4.2 队列及其基本运算,2循环队列及其运算 队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用 入队运算 :队尾指针加1,并当rear=m+1时置rear=1 出队运算:队头指针加1,并当front=m+1
11、时置front=1,1.5 线性链表,32,1.5.1 线性链表的基本概念,1线性表顺序存储的缺点 插入或删除的运算效率很低。在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素。 线性表的顺序存储结构下,线性表的存储空间不便于扩充。 线性表的顺序存储结构不便于对存储空间的动态分配。,33,1.5.1 线性链表的基本概念,2线性链表 线性表的链式存储结构 物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的 每个结点由两部分组成:数据域和指针域,34,1.5.1 线性链表的基本概念,双向链表:每个结点设置两个指针 左指针:指向其前件结点 右指针:
12、指向其后件结点,35,1.5.2 线性链表的基本运算,插入 删除 合并 分解 逆转 复制 排序 查找,36,1.5.2 线性链表的基本运算,1在线性链表中查找指定元素 链表不是随机存取结构 从链表的头指针出发,顺着链域next逐个结点往下搜索,直至搜索到第i个结点为止 2线性链表的插入,37,1.5.2 线性链表的基本运算,3线性链表的删除 与顺序存储相比,链表的优点有: 插入和删除元素时,不需要移动数据元素,只需要修改指针即可,38,1.5.3 栈和队列的链式存储结构,1栈的链式存储结构链栈,39,1.5.3 栈和队列的链式存储结构,2队列链式存储结构链队列,40,1.5.4 循环链表及其基
13、本运算,循环链表特点: 在链表中增加了一个表头结点 最后一个结点的指针域指向表头结点,构成了一个环状链 循环链表优点: 从任一结点出发来访问表中其他所有结点 空表与非空表的运算的统一,41,1.6 树与二叉树,1树的定义 树(Tree)是n(n0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)其余的结点可分为m(m0)个互不相交的子集T1,T2,T3,Tm,其中每个子集又是一棵树,并称其为子树。,42,1.6 树与二叉树,2树中的基本概念 父结点与树的根:每个结点最多只允许有一个前件,称为该结点的父结点。没有前件的结点中
14、有一个,称为树的根结点。 子结点与叶子结点:在树结构中,每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。 结点的度和树的度:一个结点所拥有后件个数称为该结点的度。一棵树中各个结点度数的最大值叫做这棵树的度。 层和树的深度:树结构是一种层次结构,根结点为第一层,根的子结点为第二层,其余各结点的层数逐层由上而下计算。一棵树中结点的最大层数叫做此树的深度。,43,1.6.1 树的基本概念,树的特点 (1)树中只有根结点没有前件; (2)除根外,其余结点都有且仅一个前件; (3)树的结点,可以有零个或多个后件; (4)除根外的其他结点,都存在唯一条从根到该结点的路径;
15、(5)树是一种分支结构(除根的结点外)每个元素都有且仅有一个直接前件,有且仅有零个或多个直接后件。 树的存储 用多重链表来表示,44,1.6.2 二叉树及其基本性质,1二叉树的定义 一个二叉树是n个结点的有限集合(n0),此集合或者是空集(n=0),或者是由一个根结点及两棵互不相交的、分别称为左子树和右子树的二叉树组成,并且左右子树都是二叉树。 特点: 非空二叉树只有一个根结点; 每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。,45,1.6.2 二叉树及其基本性质,2二叉树的性质 性质1 在二叉树的第k层上,最多有 个结点。 性质2 深度为m的二叉树最多有 个结点。 性质3 在任
16、意一棵二叉树中,度数为0的结点(即叶子结点)总比度为2的结点多一个。即: 其中,n0表示度数为0的结点数,n2表示度数为2的结点数。 性质4 具有n个结点的二叉树的深度至少为 ,其中 表示取 的整数部分。,46,1.6.2 二叉树及其基本性质,3满二叉树和完全二叉树 满二叉树:除最后一层外,每一层上的所有结点都有两个子结点。 完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。,1,2,3,4,5,6,7,14,8,9,10,11,12,13,15,1,2,3,4,5,6,7,8,9,10,满二叉树,完全二叉树,47,1.6.2 二叉树及其基本性质,性质5
17、 具有n个结点的完全二叉树深度为 。 性质6 设完全二叉树共有n个结点,如果从根结点开始,按层序(每一层从左到右)用自然数1,2,n给结点进行编号,则对于编号为i(i=1,2,n)的结点有以下结论: 若i=1,则该结点为根结点,它没有父结点;若i1,则该结点的父结点的编号为INT(i/2)。 若2in,则编号为i的左子结点编号为2i;否则该结点无左子结点(显然也没有右子结点)。 若2i+1n,则编号为i的右子结点编号为2i+1;否则该结点无右子结点。,48,1.6.3 二叉树的存储结构,普通二叉树 采用链式存储结构 存储结点由两部分组成:数据域与指针域 两个指针域: 左指针域 右指针域 满二叉
18、树与完全二叉树 采用顺序存储结构,49,1.6.4 二叉树的遍历,二叉树的遍历:不重复地访问二叉树中的所有结点 1前序遍历(DLR) 首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 2中序遍历(LDR) 首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树 3后序遍历(LRD) 首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。,50,1.6.4 二叉树的遍历,前序遍历: A、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 公共 基础知识
限制150内