2013年软件设计师考试知识结构(八)

2023-12-10 20:38

本文主要是介绍2013年软件设计师考试知识结构(八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第八章 数据结构

线性结构

线性表

线性表的顺序存储结构:在等概率下插入一个新元素需要移动元素的个数为n/2,删除一个元素需要移动的个数为(n-1)/2

线性表的链式存储结构:其基本节点结构为数据域+指针域

双向链表、循环链表和静态链表.

栈和队列

可以通过整除取余运算将顺序队列假想成一个环状结构,称为循环队列.

 

子串的定位操作称为串的模式匹配.

朴素的模式匹配算法(布鲁特-福斯算法):从主串的第一个字符与模式串的第一个字符比较,若相等,则继续逐字比较,否则,从主串的第二个字符与模式串的第一个字符比较,如此直至找到或主串比较到最后一个字符.最好情况下,其平均比较次数为(m+n)/2,时间复杂度为O(m+n);最坏情况下,其平均比较次数为m*(n-m+2)/2,时间复杂度为O(n*m)

改进的模式匹配算法(KMP算法):其改进之处在于:每当匹配过程中出现比较的字符串不相等时,需要回溯主串的字符位置指针,而是利用以及得到的”部分匹配”结果,将模式串向右”滑动”尽可能远的距离,再继续进行比较.

 

数组、矩阵和广义表

数组

矩阵

特殊矩阵:相同值的元素或0元在矩阵中的分布有一定的规律,其有三角矩阵、对称矩阵和对角矩阵;

稀疏矩阵:非0元的个数远远小于0元素的个数,且非0元素的分布没有规律.

 

广义表

不能使用顺序存储结构表示.

树与二叉树的定义

二叉树的性质与存储结构

N个节点的完全二叉树的深度为(log2n)+1

任何一棵二叉树,其叶子节点数总是比度为2的节点数多1

满二叉树/完全二叉树/非完全二叉树

完全二叉树可以采用顺序存储结构,而非完全二叉树则不适宜才用顺序存储结构.

二叉树的遍历

先序/中序/后序/层序遍历.不论按那种次序遍历,其时间复杂度都是O(n),在最坏的情况下,空间复杂度为O(n).

线索二叉树

记录了遍历中的前驱和后继信息的树.

最优二叉树

哈夫曼树:带权路径长度最短的树.

构造哈夫曼树的方法是:从待构造的元素中选出两个权值最小的元素分别作为左右子树,构成一个新树,并将左右子树的权值之和再放入到待构造的元素集合中,循环直到将所有的元素都放到一颗树中,这颗树就是最优二叉树.

哈夫曼编码:

树和森林

图的定义和存储

有向图、无向图、完全图(任意两点间有边)、连通图(任意两点间有路径的无向图)、连通分量(无向图的极大连通子图)、强连通图、强连通分量(对有向图来说)、网(带权值的图)、有向树.

图的存储结构:邻接矩阵表示法/邻接链表表示法

图的遍历

深度优先搜索(Depth First Search ,DFS):当使用邻接矩阵表示时,查找所有顶点的邻接点所需的时间为O(n2);若使用邻接表作表示时,需要O(e);当以邻接链表表示时,需要O(n+e)

广度优先搜索(Breadth First Search ,BFS):其时间复杂度和DFS方法一样.

生成树及最小生成树

所有连通图的生成树是该图的极小连通子图.

权值最小的生成树为最小生成树.

最小生成树求解算法有普里姆(Prim)算法(以点找边,时间复杂度为O(n2),与边数无关,适合求边稠密的网的最小生成树)和克鲁斯卡尔(Kruskal)算法(以边找点,时间复杂度为O(eloge),与顶点数无关,适合求边稀疏的网的最小生成树.)

拓扑排序和关键路径

AOV网(Activity OnVertex network):以顶点表示活动,用有向边表示活动之间的优先关系,则称这样的有向图为以顶点表示活动的网.AOV网中不能出现环路;

拓扑排序:是将AOV网中所有顶点排成一个线性序列的过程;其方法是先将入度为0的顶点输出,并删除该顶点的所有相关边,重复这个过程直到将所有的顶点输出;若剩下的顶点都有入度,则表示AOV网中存在环路;若有向图无环时,也可以利用DFS进行逆拓扑排序;拓扑排序算法的时间复杂度为O(n+e)

AOE(ActivityOn Edge network)网:以顶点表示事件,以有向边表示活动,边上的权值表示活动的持续时间,则这种带权有向图称为用边表示活动的网;AOE网中列出了完成预定工程计划所需进行的活动、每项活动的计划完成时间、活动开始或结束的事件以及这些事件或活动间的关系;AOE图关系的是完成工程至少需要多少时间和哪些活动是影响整个工程进度的关键.

从源点到汇点的路径中,长度最长的路径称为关键路径,在关键路径上的活动称为关键活动.

最短路径

单源点最短路径:迪杰斯特拉(Dijkstra)算法;

每对顶点间的最短路径:弗洛伊德(Floyd)算法;

查找

查找的基本概念

静态查找表:只查找特定的数据元素和数据元素的各种属性;

动态查找表:还需要插入或删除查找表中的元素.

平均查找长度:平均比较的次数.

静态查找表的查找方法

顺序查找法:其平均查找长度为(n+1)/2

折半查找法:表中的元素已经有序.其平均查找长度为log2(n+1)-1;其适用于表不易变动,且又经常进行查找的情况.

分块查找法:将表分成若干块,每块的关键字不一定有序,但块之间是有序的;先使用折半查找法确定在哪块中,在用顺序查找法在块内查找;其平均查找长度为(n/s+s)/2+1,其平均查找长度既与表长度n有关还与每块中的记录数有关,且s取n的开方时,其查找效率比较好.

动态查找表

二叉排序树:左小右大,查找过程类似折半查找法;当输入元素已经有序时,二叉排序树为单支二叉树,此时查找效率与顺序查找的效率相同.

二叉排序树的插入和删除节点:

平衡二叉树:左右子树高度差不超过1

哈希表

排序

排序的基本概念

稳定排序和不稳定排序.内部排序和外部排序.

简单排序

直接插入排序:将第i个元素与已经有序的i-1个元素逐个比较以确定插入的位置;这是一种稳定的排序方法,其时间复杂度为O(n2),空间复杂度为O(1)

冒泡排序:逐个比较,逐个交换,一趟冒泡可以确定最后一个元素,其时间复杂度和空间复杂度分别为O(n2)和O(1),其也是一种稳定排序方法

简单选择排序:通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换,当i等于n时所有记录有序排列.这是一种不稳定排序, 其时间复杂度和空间复杂度分别为O(n2)和O(1)

希尔排序

先将整个待排序序列分割成若干子序列,然后分别进行直接插入排序,待整个序列中的记录基本有序是,再对全体记录进行一次直接插入排序. 这是一种不稳定排序, 其时间复杂度和空间复杂度分别为O(n1.3)和O(1)

快速排序

将序列排序成两个独立的部分,一个部分中的元素都不大于另一个部分中的元素,然后对这两个部分继续进行快速排序,以达到整个序列有序.这是一种不稳定的排序方法,其时间复杂度和空间复杂度分别为O(nlogn)和O(logn).若初始记录序列按关键字有序或基本有序时,快速排序则退化为冒泡排序.

堆排序

堆:将一维数组看成是一个完全二叉树,则堆的定义表明,在完全二叉树中,非叶子节点的值均不小于其左右孩子节点的值,因此,其根节点为序列中最大的值.根节点值为序列中最大的值叫大根堆,为最小的值就叫小根堆.

堆排序:对一组待排序记录的关键字,首先按照堆的定义排成一个序列,从而可以输出堆顶元素,剩下的关键字再进行调整成新堆,如此反复,知道全部关键字排序成有序序列为止.

堆排序也是一种不稳定排序方法,其时间复杂度为O(nlogn)

归并排序

两路归并的核心是将一维数组中前后相邻的两个有序序列归并为一个有序序列.其时间复杂度为O(nlogn)

基数排序

基数排序的思想是按组成关键字的各个位数的值进行排序的.是一种稳定排序方法.

内部排序方法小结

若待排序的记录数目较小时,可采用插入排序和简单选择排序;

若待排序的记录按关键字基本有序,则宜采用直接插入排序或冒泡排序;

当待排序的记录数很大且关键字位数较少时,采用链式基数排序较好;

若n较大,则应采用时间复杂度为O(nlogn)的排序方法,如快速排序、堆排序或归并排序.

外部排序

外部排序就是对大型文件的排序,待排序的记录存放在外存.常用的外部排序方法是归并排序.

这篇关于2013年软件设计师考试知识结构(八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478308

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

hdu 2093 考试排名(sscanf)

模拟题。 直接从教程里拉解析。 因为表格里的数据格式不统一。有时候有"()",有时候又没有。而它也不会给我们提示。 这种情况下,就只能它它们统一看作字符串来处理了。现在就请出我们的主角sscanf()! sscanf 语法: #include int sscanf( const char *buffer, const char *format, ... ); 函数sscanf()和

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的