备战2023年5月份的软件设计师考试,在此记录学习之路。
知识点总结,具体内容请查看对应的模块。
提示:这里有软件设计师资料,包含软件设计师考试大纲、软件设计师第五版官方教程、历年考试真题。
通过百度网盘分享的文件:软件设计师
链接: https://pan.baidu.com/s/1M6ZKuBJo9DEvdmLgbgDGvg?pwd=1024
提取码:1024
复制这段内容打开「百度网盘APP 即可获取」
第一章 计算机系统基础知识
第二章 程序设计语言基础知识
第三章-数据结构
算法时间复杂度以算法中基本操作重复执行的次数(简称为频度〉作为算法的时间度量。一般不必要精确计算出算法的时间复杂度,只要大致计算出相应的数量级即可,如O(1)、O(logon)、O(n)或O(n2)等。
计算规则
加法规则
:多项相加,保留最高阶项,并将系数化为1
乘法规则
:多项相乘都保留,并将系数化为1
加法乘法混合规则
:先小括号再乘法规则最后加法规则
时间复杂度估算看最内层循环,如若没有循环和递归则为O(1)
空间开销(内存开销)与问题规模n之间的关系。
简单的说就是程序运行所需要的空间。
顺序存储是指用一组地址连续的存储单元依次存储线性表中的数据元素,从而使逻辑上相邻的两个元素物理上也相邻。
优点是:可以随机存取表中的元素。
缺点是:插入和删除操作需要移动元素。
在表长为n,即有n个元素的线性表中,等概率下插入元素需要移动的元素个数期望值是n/2
,删除元素需要移动的元素个数期望值是(n-1)/2
插入删除平均时间复杂度为O(n),查询平均时间复杂度O(1)
存储各数据的节点的地址并不要求是连续的,因此存储数据元素的同时必须存储元素之间的逻辑关系。
节点空间只有在需要的时候才申请,无需事先分配。
如果用单链表作为栈的存储结构,并用头指针作为栈顶指针,则入栈和出栈都不需要遍历链表。
栈适用于函数的递归调用。
采用循环队列的有点是,入队和出队都不需要移动队列中的其它元素。
队列的链式存储入队和出队不需要遍历整个队列。
串是一种特殊的线性表,其数据元素为字符。由字符构成的有限序列。
空串:长度为零的串。
空格串:有一个或者多个空格构成。
串相等:两个串长度相等,字符也相同。
串比较:比较ASCII码,从第一个字符开始比较。
1、朴素的模式匹配算法。
n父串m子串,算法的时间复杂度:最好:O(M),最坏:O(nm),平均:O(n+m)
最坏匹配次数为:(n-m+1)*m
2、改进的模式匹配算法(kmp算法)
串的前缀:包含第一个字符并且不包含最后一个字符的子串
串的后缀:包含最后一个字符并且不包含第一个字符的子串
第i个字符的next值= 从1 ~ i - 1串中最长相等前后缀子串的长度+1
特殊情况: next[1] = 0
数组是定长线性表在维数上的扩展。
已知首地址,计算地址公式:
特殊的矩阵:对称矩阵、三对角矩阵、稀疏矩阵。
对称矩阵
稀疏矩阵的三元组表的顺序存储结构称为三元组顺序表,常用的三元组表的链式存储结构是十字链表。
树结构是一种非常重要的非线性结构,该结构中的一个数据元素可以有0个或多个直接后继元素。
3个节点的有5中形态,4各节点有14中形态,5个节点有42中形态。
二叉树的二叉链式存储中,n个节点有n+1个空指针域。
二叉树的三叉链式存储中,n个节点有n+2个空指针域。
最优二叉树构造:
构造规则总结:
1、从前往后找权值最小的两个数。
2、小的放左边,大的放右边
3、构造的子树放末尾。
4、权值相同,从左往右。
邻接矩阵适合存储稠密图,边数比较多。
邻接链表适合存储稀疏图,边数比较少
了解下网。
有向无环图
在有向无环图G的拓扑序列中,顶点vi在vj之前,则:
可能存在弧
可能存在vi到vj的路径,一定不存在vj到vi的路径
静态查找:顺序查找、折半查找(二分查找)、分块查找
动态查找:二叉排序树、平衡二叉树、B_树、哈希表
最多比较次数为:log2[^n]+1
上图有错误,快速排序空间复杂度为:
可以归位的算法:冒泡、简单选择、堆排序、快速排序
本章到此结束。