软考(软件设计师)考点总结 -- 数据结构与算法基础
数据结构
数据结构的定义:
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面。一个算法的设计取决于所选的逻辑结构,而算法的实现依赖于所采用的的存储结构。
数据逻辑结构:
线性表:
顺序存储与链式存储:
性能对比:
字符串(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的质数)
排序算法
复杂度与稳定性比较:
直接插入排序:
若一组序列基本有序,则适合进行掺入排序。
希尔排序:
直接选择排序:
堆排序:
冒泡排序:
快速排序:
归并排序:
基数排序:
软考(软件设计师)考点总结 -- 数据结构与算法基础相关推荐
- excel 进行二叉树_软考 软件设计师考点整理:树与二叉树
[考法分析] 1.本知识点的主要考查形式有:对数与二叉树的一些概念和特性的描述,判断其正误:对于特殊的二叉树(平衡树.哈弗曼树.满二叉树.排序树等)定义.特性的描述判断正误.或根据题干描述构造特殊的二 ...
- 软考-软件设计师 - 第9章 数据库技术基础【附补充常考知识点】
9.1 基本概念 9.1.1 数据库与数据库系统 数据库系统是才采用数据库技术,有组织的.动态的存储大量相关数据,方便多用户访问的计算机系统.由数据库.硬件.软件.人组成. 9.1.2 数据库管理系统 ...
- 软考-软件设计师 - 第2章 程序设计语言基础知识【附补充常考知识点】
本章导图: 2.1 程序设计语言概述 2.1.1 程序设计语言的基本概念 1 低级语言与高级语言 低级语言:机器语言.汇编语言 高级语言:面向各类应用的程序设计语言,如Java,C,C++,PHP,P ...
- 【软考-软件设计师】(下午题).
[软考-软件设计师](下午题). 一,数据流图 二,数据库 三,UNL 四,算法题 ,c语言 五,c++ / java ,程序填空 数据流图 数据流图基本概念 数据流图:没有联系() 数据字典 数据流 ...
- 【软考-软件设计师精华知识点笔记】第十章 网络与信息安全
前言 由于笔记复制到CSDN样式失效,没有精力再重新完整的检查并设置一遍样式,有积分的可以前往下载word.pdf.有道云笔记版本. 需要说明的是,下载的内容与本篇分享内容一致,只有样式的区别[比如重 ...
- 软考-软件设计师 笔记一(计算机组成与体系结构)
本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...
- 软考-软件设计师 笔记九(多媒体基础)
本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...
- 软考-软件设计师 笔记十(软件工程)
本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...
- 视频教程-2020软考软件设计师-上午真题解析视频课程-软考
2020软考软件设计师-上午真题解析视频课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在<计 ...
- 软考-软件设计师 笔记十二(数据流图)
本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...
最新文章
- 自定义View 实现软键盘实现搜索
- 超图桌面版根据现有数据源制作一幅地图简单操作
- 建议大家使用Java 8 的日期、时间,而非java.util.Date
- phpexcel常见问题的解决办法
- sparksql 操作hive_Spark SQL 物化视图原理与实践
- jQuery复制table header到表格的最下面
- 如何选择物联网通讯技术?
- 不等于在python中怎么打_python中的不等于号怎么写
- vb6实现下载带进度
- FAT32文件操作系统(主要针对SD卡)
- 用户体验测试(UX测试)
- php阿里云短信验证码
- HTML网页设计:八、媒体元素
- 吴恩达 - 神经网络与深度学习 学习笔记
- Oracle Rac 添加节点测试笔记
- 打造黑苹果(四)安装MACOS系统
- PDF预览电子签章无法显示问题
- 镜头评价指标及测试方法【四】————手机摄像头调查
- 人在弥留之际的五大憾事
- Ansible学习笔记——vault加密