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

1.数组:
软考(软件设计师知识点)--数据结构与算法基础_第1张图片
2.稀疏矩阵:一个矩阵中所记录的元素,大量元素都是零
软考(软件设计师知识点)--数据结构与算法基础_第2张图片
做题时可以用代入法
3.数据结构的定义:
数据结构是计算机存储和组织数据的方式
数据逻辑结构:线性结构、非线性结构(树形结构(没有环路)、图)
4.线性表的定义:
存储方式:顺序表(空间连续)、链表(单链表、循环链表、双向链表)(既存数据又存指针)

5.顺序存储与链式存储对比:
软考(软件设计师知识点)--数据结构与算法基础_第3张图片
6.栈与队列
队列:先进先出
栈:先进后出
循环队列:队头连接队尾
队空的条件:头和尾相等,指向同一个空间head=tail
队满的条件:(tail+1)%size=head
元素按照ABC的顺序入栈,出栈的序列可能:CBA/BAC /ABC
7.广义表:由n个表元素所组成的有限的序列,线性表的推广
广义表的长度指表元素的的个数,深度为括号的嵌套层数
基本操作:head取表头(最外层的第一个元素)tail取表尾(除表头元素的其他元素)
软考(软件设计师知识点)--数据结构与算法基础_第4张图片
8.树与二叉树:
1.节点的度:一个节点拥有的孩子节点数
2.树的度:所有节点度数最高的就是树的度
3.叶子节点:没有孩子节点的
4.分支节点:有分支的
5.内部节点:既不是页子节点,也不是根节点,夹在中间的
6.父节点、子节点:相对而言
7.兄弟节点:同一父亲底下,平级的
8.层次:
软考(软件设计师知识点)--数据结构与算法基础_第5张图片
9.满二叉树和完全二叉树
满二叉树:整棵树没有缺失的节点
完全二叉树:除了最底下一层,上面层次都是满的,下面一层从左到右排
软考(软件设计师知识点)--数据结构与算法基础_第6张图片

10.二叉树遍历:
1.层次遍历:每层节点从左到右访问
2.前序遍历:先访问跟节点,再访问左子树和右子树节点
3.中序遍历:先访问左子树,再访问根节点,再访问右子树
4.后序遍历:先访问左子树,再访问右子树,最后根节点
11.反向构造二叉树:
12.树转二叉树:
原则:树中的孩子节点都会成为二叉树的左子树节点,兄弟节点,都会成为右子树节点。
13.查找二叉树:(排序二叉树) 左孩子小于根,右孩子大于根
优点:提高效率
14.最优二叉树(哈弗曼树):节省存储空间和带宽
基本概念:
树的路径长度:各个路径累加起来
权:某个叶子节点的数值出现的频度
带权的路径长度:路径长度*权值
树的带权的路径长度(树的代价):所有的带权路径长度累加起来
达到效果:让一棵树带权路径长度是最短的
15.线索二叉树:
软考(软件设计师知识点)--数据结构与算法基础_第7张图片
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。若进行排序,按照中序遍历排序。
16.平衡二叉树:
定义:任意节点的左右子树的深度相差不超过1(左-右)
每节点的平衡度只能为-1,0,1
17.图的基本概念:
软考(软件设计师知识点)--数据结构与算法基础_第8张图片
邻接矩阵:
软考(软件设计师知识点)--数据结构与算法基础_第9张图片
邻接表:
软考(软件设计师知识点)--数据结构与算法基础_第10张图片
18.图的遍历:
软考(软件设计师知识点)--数据结构与算法基础_第11张图片
19.拓扑排序
用序列表示哪些事件可以先执行,哪些后执行
软考(软件设计师知识点)--数据结构与算法基础_第12张图片
20.图的最小生成树:
形成环路的是图,树没有环路。
节点数=边就是图
图中的权值相加是最小的,就是最小生成树
相应算法:
1.普里姆算法
从一个点开始,最近的点连接
树的总长度是图的最短的情况,不能形成环
2.克鲁斯卡尔算法:
从最短的边开始选起
21.算法的特点:
1.有穷性:步骤数量有限
2.确定性
3.输入(>=0)
4.输出(>=1)
5.有效性:步骤得到有效的结果
22.算法的复杂度:
时间复杂度:算法执行下来要用多少时间。
空间复杂度:算法执行过程中临时占用的存储空间大小
常数级的时间复杂度:O(1)
循环体执行N次:O(n)
多重算法:取最高的
对树的处理,经常用O(log2n)(n代表节点的数量)
软考(软件设计师知识点)--数据结构与算法基础_第13张图片
23.查找:
1.顺序查找:
顺序查找最好的次数是一次,最差的情况是n次,平均查找(n+1)/2
时间复杂度是O(n)
软考(软件设计师知识点)--数据结构与算法基础_第14张图片
2.二分查找法(折半查找):
软考(软件设计师知识点)--数据结构与算法基础_第15张图片
前提:序列的关键字是有序排列(从小到大,或从大到小)
带小数的中间数要取整
二分查找法查找成功是比较的次数最多是(log2n)+1
二分查找的时间复杂度是O(log2n)
24.散列表查找:
软考(软件设计师知识点)--数据结构与算法基础_第16张图片
散列表冲突的解决方法:
线性探测法:顺次放在后面空间
伪随机数法:
25.排序:
概念:稳定和不稳定排序、 内排序和外排序
排序方法:
插入类排序:直接插入排序、希尔排序
交换类排序:冒泡排序、快速排序
选择类排序:简单选择排序、堆排序
归并排序
基数排序
1.直接插入排序:(速度慢,效率低)
在这里插入图片描述
2.希尔排序:数据越多,效率越高。
软考(软件设计师知识点)--数据结构与算法基础_第17张图片
3.直接选择排序:
软考(软件设计师知识点)--数据结构与算法基础_第18张图片
4.堆排序:
软考(软件设计师知识点)--数据结构与算法基础_第19张图片
所有的孩子节点都小于根节点,属于大顶堆,所有的孩子节点都大于根节点,属于小顶堆。
先将序列建立成堆,依次取出堆顶元素,就是有序序列。

软考(软件设计师知识点)--数据结构与算法基础_第20张图片
软考(软件设计师知识点)--数据结构与算法基础_第21张图片
5.冒泡排序
软考(软件设计师知识点)--数据结构与算法基础_第22张图片
6.快速排序:分治法
软考(软件设计师知识点)--数据结构与算法基础_第23张图片
7.归并排序法:
软考(软件设计师知识点)--数据结构与算法基础_第24张图片
8.基数排序:
将数字按位数拆开进行排序
总结:
软考(软件设计师知识点)--数据结构与算法基础_第25张图片

更多软考资讯,请关注我的个人公众号 “软考管家”
软考(软件设计师知识点)--数据结构与算法基础_第26张图片

你可能感兴趣的:(软件设计师)