软考(软件设计师)考点总结 -- 数据结构与算法基础

Posted 龙源lll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软考(软件设计师)考点总结 -- 数据结构与算法基础相关的知识,希望对你有一定的参考价值。

数据结构

数据结构的定义:
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面。一个算法的设计取决于所选的逻辑结构,而算法的实现依赖于所采用的的存储结构。

数据逻辑结构:
在这里插入图片描述

线性表:
在这里插入图片描述

顺序存储与链式存储:
在这里插入图片描述
性能对比:
在这里插入图片描述

字符串(String): 符号与数值的一个连续序列。字符串长度值字符个数的总和(包括空格)。

KMP匹配算法:进行字符串模式匹配运算效率较高的算法
在这里插入图片描述
结果:
在这里插入图片描述
j=1,第一种情况,next=0
j=2,第三种情况,字符串(a),next=1
j=3,字符串(ab),无匹配项,第三种情况,next=1
j=4,字符串(abc),无匹配项,第三种情况,next=1
j=5,字符串(abca),k=2时p1=p5-2+1,第二种情况,next=k=2
j=6,字符串(abcaa),k=2时p1=p6-2+1,第二种情况,next=k=2
j=7,字符串(abcaab),k=3时p1p2=p5p6,第二种情况,next=k=3

队列与栈:

在这里插入图片描述

例题:
在这里插入图片描述
答案:cba、bca、abc
入队与出队的序列是相同的,但是再入栈序列一定的情况下,元素的出栈时机可以不同,会形成不同的出栈序列。
在这里插入图片描述
答案:D,e3不可能在e2和e1中间

数组、矩阵和广义表

数组:
在这里插入图片描述

例题:
在这里插入图片描述
答案: a + (2 * 5 + 3) * 2 = a + 26

稀疏矩阵:

在这里插入图片描述

例题:
在这里插入图片描述
答案:A

广义表:
在这里插入图片描述

长度: 最外层含有的元素数,深度: 嵌套最多的层数
例1: 长度3,深度2
例2: head(head(tail(LS1)))

树与二叉树

在这里插入图片描述

结点的度:此结点的子结点数
树的度:树中,节点的最大度
叶子结点:度为0的结点
内部节点:度不为0的结点,也称为分支结点或非终端结点
层次:根结点为第一层,之后层数依次加1

二叉树:
在这里插入图片描述
满二叉树: 二叉树中所有非叶子结点的度都是2,且叶子结点都在同一层次上
完全二叉树: 如果一个二叉树与满二叉树前m个节点的结构相同,这样的二叉树被称为完全二叉树

二叉树的遍历:
在这里插入图片描述

前序遍历(左根右): 1,2,4,5,7,8,3,6
中序遍历(根左右):4,2,7,8,5,1,3,6
后序遍历(左右根):4,8,7,5,2,6,3,1
层序遍历(逐层遍历): 1,2,3,4,5,6,7,8

树转二叉树: 左孩子、右兄弟
在这里插入图片描述

反向构造二叉树:
在这里插入图片描述

解析:前序序列得知:根节点为A,中序序列知:左子序列为HBEDF,有子序列为GC
左子序列的前序序列是BHFDE,即根结点是B,左子序列H,有子序列是EDF,依此类推
只有知道前序序列/中序序列或者知道中序序列/后序序列才能反向构造二叉树。

查找二叉树:
在这里插入图片描述

最优二叉树(哈夫曼树):
在这里插入图片描述

带权路径长度: 路径长度 * 权值
树的带权路径长度:所有节点的带权路径长度之和。
哈夫曼编码:左0、右1

线索二叉树:
在这里插入图片描述
前序线索二叉树: 左子针指向前序遍历的前驱节点,右子针执行前序遍历的后继节点。

平衡二叉树:
在这里插入图片描述
平衡度:叶子节点为0,其它: 左子树深度 - 右子树深度

B-树:
M阶B-树中,数中每个节点至多有M棵子树,若根节点不是叶子节点,则是少有两棵树;除根以外所有非终端结点至少有[M/2]棵子树。

在这里插入图片描述
完全图适合采用邻接矩阵存储。

邻接矩阵:
在这里插入图片描述

邻接表:
在这里插入图片描述

图的遍历:

图的遍历是指对图中所有顶点进行访问,且只访问一次的过程。为了避免顶点的重复访问,可以在遍历过程中对已访问过的结点进行标记。
在这里插入图片描述

拓扑排序:

对有向图进行拓扑排序的方法如下:
在AOV网中选择一个入度为零的顶点输出,从网中删除该顶点,以及与该点有关的所有边。重复执行,一直到网中不存在入度为0的顶点为止。
在这里插入图片描述

图的最小生成树:

普利姆算法:
从某一个顶点出发,依次找于其相连的边的最小值,之后变成两个顶点,找两个顶点相连边的最小值,依次类推,找到将所有顶点找完为止,得到普迪姆算法的最小生成树。
在这里插入图片描述

克鲁斯卡尔算法:
依次寻找图中没有产生环路现象的最小边。
在这里插入图片描述

算法分析

算法的特性:
在这里插入图片描述

算法的复杂度:
在这里插入图片描述

分治算法:
在这里插入图片描述
在这里插入图片描述
回溯法:
在这里插入图片描述
贪心法:
在这里插入图片描述
动态规划法:
在这里插入图片描述

查找算法

查找算法:顺序查找、二分查找、散列表

顺序查找:
在这里插入图片描述

二分查找:
先对中间位置元素比较,查找元素比该元素大时,对后半去域进行二分查找,比当前元素小时,对前半区进行二分查找。
在这里插入图片描述

在这里插入图片描述
折半查找成功时关键字的比较次数最多为[log2n]+1次。
折半查找的时间复杂度为O(log2n)

散列表(哈希表):
在这里插入图片描述
哈希表是一个通过记录关键字为自变量的函数得到该记录的存储地址而构造的查找表。
哈希冲突:哈希函数将关键字不同的元素映射到了同一个存储地址。
减少冲突:是哈希函数尽可能均匀的把关键字映射到存储区的各个存储地址上,这样可以提高查找效率。
H(Key)=Key mod p,(p的值一般为不大于n且最接近n的质数)

排序算法

在这里插入图片描述

复杂度与稳定性比较:
在这里插入图片描述

直接插入排序:
若一组序列基本有序,则适合进行掺入排序。
在这里插入图片描述

希尔排序:
在这里插入图片描述

直接选择排序:
在这里插入图片描述
堆排序:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

冒泡排序:
在这里插入图片描述
快速排序:在这里插入图片描述
归并排序:
在这里插入图片描述
基数排序:
在这里插入图片描述

以上是关于软考(软件设计师)考点总结 -- 数据结构与算法基础的主要内容,如果未能解决你的问题,请参考以下文章

软考(软件设计师)考点总结 -- 计算机组成与体系结构

软考(软件设计师)考点总结 -- 软件工程基础知识

软考(软件设计师)考点总结 -- 数据结构与算法基础

软考(软件设计师)考点总结 -- 面向对象设计基础

软考(软件设计师)考点总结 -- 程序设计语言基础

软考(软件设计师)考点总结 -- 多媒体技术基础