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

数据结构

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

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

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

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

字符串(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的质数)

排序算法

在这里插入图片描述

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

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

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

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

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

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

  • 19
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
CSDN四川大学数据结构与算法考点汇总主要内容包括以下几个方面。 首先是数据结构的基本知识点。包括线性表、栈、队列、串、数组、链表、树和图等常用数据结构的定义、性质以及相关操作。例如,线性表的顺序表示与链式表示、树的遍历算法(前序、中序、后序)、图的遍历算法(深度优先搜索和广度优先搜索)等。 其次是常见的排序和查找算法。主要包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等各种排序算法的原理、时间复杂度和空间复杂度。还有二分查找和哈希查找等常见查找算法。 接着是常用的高级数据结构与算法。主要包括二叉树、红黑树、B树、哈希表、图的最短路径算法(Dijkstra算法和Floyd算法)、最小生成树(Prim算法和Kruskal算法)等。 最后是一些经典算法问题的解决方法。例如,递归和回溯算法、动态规划算法、贪心算法等。同时还涉及一些常见的算法问题,如字符串匹配问题(KMP算法、Boyer-Moore算法)、最长公共子序列问题、最大子数组和问题等。 以上就是CSDN四川大学数据结构与算法考点汇总的简要介绍。这些考点内容涵盖了数据结构与算法基础知识、常见排序和查找算法、高级数据结构与算法以及一些经典算法问题的解决方法。熟练掌握这些知识,对于提高编程能力和解决实际问题都具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙源lll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值