全国软考中级软件设计师 学习笔记-数据结构部分
想要电子版本的同学可以留言或者私信我获取,辛苦整理资料,欢迎点赞、收藏和评论
数据结构
1. 数组
数组地址的计算
例题:
答案:根据公式a+(i*n+j)*len,即存储地址=0+(2*5+3)*2 = 13*2 = 26 是数组的第14个元素,有13个偏移量
2. 稀疏矩阵
稀疏矩阵:矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,通常认为矩阵中非零元素的总数比上矩阵所有元素总数的值小于等于0.05时,则称该矩阵为稀疏矩阵(sparse matrix),该比值称为这个矩阵的稠密度;与之相区别的是,如果非零元素的分布存在规律(如上三角矩阵、下三角矩阵、对角矩阵),则称该矩阵为特殊矩阵。
例题:
答案:A
3. 线性表
3.1 顺序表与链表
3.2 链表的基本操作
对于单链表删除操作:p->next =q->next
对于单链表插入操作:s->next =p->next
p->next=s
注意:1)需要先将插入节点指针指向a2,不然一修改a1指针a2就会丢失
2)链表增加头节点是保证对各节点操作可以一致
3.3 顺序存储与链式存储对比
3.4 队列与栈
队列(Queue):是限定只能在表的一端进行插入和另一端删除操作的线性表
栈(Stack):是限定之能在表的一端进行插入和删除操作的线性表
循环队列
例题:
答案:D
3.5 广义表
例题:
有广义表LS1=(a,,(b,c), (d,e)),则其长度为?深度为?
答案: 长度为3,深度为2
例题:有广义表LS1=(a,,(b,c), (d,e)),要将其中的b字母取出,操作为?
答案:head(head(tail(LS1)))
4. 树与二叉树
4.1 基本概念
注意:树的度是指结点的度的最大值
4.2 二叉树
满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。
完全二叉树:是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
4.3二叉树的重要特性
4.4 二叉树的遍历
四种遍历方式:前序、中序、后序和层次遍历。
注意:前序、中序、后序指根结点被遍历的时间
例题:
前序遍历: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
4.5 反向构造二叉树
根据前序和中序或者中序和后序来构造一棵二叉树
注意根据前序和后序无法构造二叉树
例题:
由前序序列为ABHFDECG;中序序列为HBEDFAGC构造二叉树
答案:先确定好根结点为A,则根据中序序列可知HBEDF为左子树,GC为右子树。同理,可进一步推理剩下的结点。
4.6 树转二叉树
孩子结点– 左子树结点
兄弟结点– 右子树结点
注意:也可以使用连线法,然后再做树旋转
4.7 查找二叉树(二叉排序树)
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
(4)没有键值相等的结点。
插入和删除操作:
4.8 最优二叉树(哈夫曼树)
树的路径长度:从树根到树中每一结点的路径长度之和。
结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。
结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。
树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和。
例题:
答案:5*5 + 3*5 + 7*4 + 14*3 + 29*2 + 8*3 + 11*3 + 23*2 = 25 + 15 + 28 + 42 + 58 + 24 + 33 + 46 = 40 + 70 + 82 + 79 = 110 + 161 = 271
注意:根据哈夫曼树的定义,一棵二叉树要使其WPL值越小,必须使权值越大的叶结点靠近根结点,二权值越小的叶结点越远离根结点。
4.9 线索二叉树
为了解决无法直接找到该结点在某种遍历序列中的前驱和后继结点的问题,在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。
注意:对于某种遍历方式,左孩子为遍历次序中的前一个结点,右孩子为遍历次序中的后一个结点
4.10 平衡二叉树
平衡二叉树又被称为AVL树(有别于AVL算法),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
5. 图
5.1 基本概念
在无向图中,若每对顶点之间都有一条边相连,则称该图为完全图。
在有向图中,若每对顶点之间都有两条有向边相互连接,则称该图为完全图。
5.2 图的存储
5.2.1 邻接矩阵
5.2.2 邻接表
5.3 图的遍历
5.4 拓扑排序
5.5. 图的最小生成树
5.5.1普里姆算法
此算法可以称为“加点法”,每次迭代选择代价最小的边对应的点,加入到最小生成树中。算法从某一个顶点s开始,逐渐长大覆盖整个连通网的所有顶点。
5.5.2 克鲁斯卡尔算法
此算法可以称为“加边法”,初始最小生成树边数为0,每迭代一次就选择一条满足条件的最小代价边,加入到最小生成树的边集合里。
6. 算法复杂度
6.1 时间复杂度
6.2 空间复杂度
7. 查找
7.1 顺序查找
将待查找的关键字为Key的元素从头到尾与表中元素进行比较,如果中间存在关键字为Key的元素,则返回成功;否则,则查找失败。
时间复杂度O (n)
7.2 二分查找
例题:
请给出在含有12个元素的有序表{1, 4, 10, 16, 17, 18, 23, 29, 33, 40 ,50, 51}中二分查找关键字17的过程
时间复杂度O(log2n)
7.3 散列表
例题
8.排序
8.1基本概念
稳定排序:能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。如果是不稳定排序,则需要第二次排序,会增加系统开销。
8.2 直接插入排序
时间复杂度:O(n^2) 属于稳定排序
8.3 希尔排序
希尔排序是直接插入排序的高级版本,由于当数据量大时,直接插入排序效率低
时间复杂度:O(n^(1.3—2)) 属于不稳定排序
8.4 简单选择排序
时间复杂度:O(n^2) 属于不稳定排序
8.5 堆排序
时间复杂度:O (nlogn) 属于不稳定排序
二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:
1)父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值
2)每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)
父结点大于任何子节点的称为大顶堆,相反,父结点小于任何子节点的称为小顶堆。堆排序对于大数据量中,只需要排出前n个时比较有用。
堆排序方法:
主要分为两步:
1)初始化构建堆时间复杂度:O(n)
2)调整堆
8.6 冒泡排序
时间复杂度:O(n^2) 属于稳定排序
8.7 快速排序
快速排序是对冒泡排序算法的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
时间复杂度:O (nlogn) 最坏时间复杂度:O(n^2)属于不稳定排序
8.8 归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。排序的思想就是将元素无限拆分,直到无可拆分为止,再将拆分的元素两两按序合并。
时间复杂度:O (nlogn) 属于稳定排序
8.9 基数排序
时间复杂度:O (d(n+k)),其中n表示待排序列的规模,d表示待排序列的最大位数,k表示每一位数的范围属于稳定排序
注意:基数排序是从低位到高位,如果从高位到低位是错误的
8.10 排序算法小结
想要电子版本的同学可以留言或者私信我获取,辛苦整理资料,欢迎点赞、收藏和评论
全国软考中级软件设计师 学习笔记-数据结构部分相关推荐
- 全国软考中级软件设计师 学习笔记-软件工程部分
想要电子版本的同学可以留言或者私信我获取,辛苦整理资料,欢迎点赞.收藏和评论! 1. 开发模型 1.1 瀑布模型(SDLC) 缺点:在开发初期,需求不明确,导致软件项目失败 适用于需求明确,或二次开发 ...
- 全国软考中级软件设计师 学习笔记-法律法规部分
想要电子版本的同学可以留言或者私信我获取,辛苦整理资料,欢迎点赞.收藏和评论 这部分没有太多难点,记忆为主 分值也不高 不建议花过多精力!! 1. 知识产权 包括:著作权及领接权.专利权.工业品外观设 ...
- 全国软考中级软件设计师 复习大纲概览
本专栏记录学习复习软考中级软件设计师的内容,官方网站上有中级设计师的考试大纲和指导用书,官网链接:https://www.ruankao.org.cn 考试的难度总体来讲不是很大,但是设计的知识面非常 ...
- 2022下半年软考-中级-软件设计师-过关经验
目录 1.重要内容 2.考情分析 3.视频笔记 1.重要内容 软考官网:中国计算机技术职业资格网 刷题:软考通app.软考真题app.软考刷题王(微信小程序).希赛网app. zst_2001软考中级 ...
- 软考中级软件设计师难不难_为什么这么难处理设计师
软考中级软件设计师难不难 重点 (Top highlight) I have a confession to make. As a young Design 'pioneer' in many tec ...
- 软考中级(软件设计师)——面向对象程序设计(C++Java二选一的题15分-目标3分)
软考中级(软件设计师)--面向对象程序设计(C++&Java二选一的题15分-目标3分) 目录 软考中级(软件设计师)--面向对象程序设计(C++&Java二选一的题15分-目标3分) ...
- 软考中级软件设计师 2009-2022年真题
** 整理了2009年到2022年 软考中级软件设计师的题目与参考答案 百度网盘分享 链接:https://pan.baidu.com/s/1f4Hfuw7lzgM4IZa-g1Wepg?pwd=50 ...
- 软考中级--软件设计师
软考中级–软件设计师 数据库系统复习总结
- 软考中级(软件设计师)——计算机网络(5分)与信息安全(3分)
软考中级(软件设计师)--计算机网络(5分)与信息安全(3分) 目录 软考中级(软件设计师)--计算机网络(5分)与信息安全(3分) 计算机网络(5分) 开放系统互连参考模型(★★) TCP/IP协议 ...
最新文章
- python编程从入门到实践看完了看什么-小白Python编程从入门到实践——列表是什么...
- 软银宣布启动5G Project:全球首家商用Massive MIMO技术
- [leetcode] remove duplicate letters
- CheckBox in ListView
- JAVA程序设计----IO流基础(上)
- [leetcode] 103.二叉树的锯齿形遍历
- C#:委托基础与事件
- 信号与系统 chapter6 时变与时不变系统
- Briefings in Bioinformatics | 王秀杰/裴小兵合作开发单细胞组学细胞标记基因鉴定算法COSG...
- rocket mq 监听端口_MQ消息最终一致性解决方案
- 鸿蒙轻内核M核源码分析:数据结构之任务就绪队列
- python开发工具下所有软件都打不开_Python中pip/setup安装插件失败提示“pypi.python.org” 打不开的解决办法...
- docker使用_Docker的基本使用
- mugen linux主程序,MUGEN主程序
- 快狗打车上市:市值超130亿港元 姚劲波与陈小华收获IPO
- QQ VS MSN——QQ “只爱陌生人”,MSN “不和陌生人说话”
- 阿里云mysql用户名和密码是什么_阿里云服务器数据库账号密码是什么
- c语言计时纳秒_C代码中以纳秒为单位计算函数时间
- Mybatis一对多和多对一联系处理
- 关键点检测方法、人体姿态估计
热门文章
- Maven本地仓库配置并给idea添加配置依赖
- 秘钥登录ssh改密码登录
- 短视频一键去除水印HTML源码
- NFT技术:让表情包也成为名贵的“收藏品”
- JDK8新特性-学习笔记
- 要求有一个 abstract 类,类名为 Employee。Employee 类有一个 abstract 方法:public abstract double earnings();
- 数字雨 ` C4droid
- 学校邮箱激活idea
- 超详细讲解CTC理论和实战
- C#基础知识及题目练习 Day8 文件操作 FileStream StreamWriter 序列化和反序列化