软考——软件设计师:第四章:数据结构&算法分析与设计考点总结(完整篇)(下)

简介: 软考——软件设计师:第四章:数据结构&算法分析与设计考点总结(完整篇)(下)

文章目录:


6. 

6.1 基本概念

6.2 图的存储

6.2.1 邻接矩阵 

6.2.2 邻接表

6.3 图的遍历

6.4 拓扑排序

6.5 最小生成树

6.5.1 普里姆算法(以顶点为中心,适合稠密图)

6.5.2 克鲁斯卡尔算法(以边为中心,适合稀疏图) 

7.排序与查找

7.1 查找 

7.1.1 顺序查找与二分查找 

7.1.2 散列表 

7.2 排序

7.2.1 直接插入排序

7.2.2 希尔排序

7.2.3 简单选择排序

7.2.4 堆排序

7.2.5 冒泡排序

7.2.6 快速排序

7.2.7 归并排序

7.2.8 基数排序

7.2.9 排序算法的时间复杂度、空间复杂度及稳定性 

8.算法

8.1 算法的特性

8.2 算法的时间复杂度和空间复杂度


6.图


6.1 基本概念

6.2 图的存储


6.2.1 邻接矩阵

6.2.2 邻接表

6.3 图的遍历

6.4 拓扑排序

上图的拓扑排序序列除了这四种,还有:0124635702146357。可见,对于同一张图的拓扑序列是不唯一的!!!


6.5 最小生成树


6.5.1 普里姆算法(以顶点为中心,适合稠密图)

我们首先从顶点A出发,找到与A相连的所有边的最小值,即A→B100,将这条边加进来,此时最小生成树中有AB两个结点;之后,我们再将与AB两个结点相连的所有边中的最小值加进来,可以看到应该是A→E200,此时最小生成树中有ABE三个结点;不断重复上述这样的步骤,直到遍历图中的所有结点,最终得到的就是普里姆算法的最小生成树。

注意:求解最小生成树的过程中,一定不能产生环路!!!例如上图中,当我们将结点FD都加进来之后,下来要寻找与这些结点相连的所有边中的最小值,可以看到F→B300D→C300,但是如果我们选择F→B这条路径,那么就产生了环路:A→F→B→A,这是错误的!!!所以只能选择D→C(图中的12345表示加入这条边的顺序,冒号后面的是对应边的具体值)


6.5.2 克鲁斯卡尔算法(以边为中心,适合稀疏图)

我们纵观图中的所有边,首先选出最小的一条边,也就是A→B100,此时最小生成树中有AB两个结点;之后再从图中找出值最小的边,可以看到有两条A→E200F→D200,加进来这两条边之后,并没有产生环路的现象,所以可以加入,此时最小生成树中有ABEFD这些结点;接下来,继续寻找值最小的边,应该时A→F250,将其加入;最后因为不能产生环路,所以只能添加值最小的边D→C300。至此,已遍历全图的顶点。(图中的1234表示加入这条边的顺序,冒号后面的是对应边的具体值)

7.排序与查找


7.1 查找


7.1.1 顺序查找与二分查找

我们看上面这个例题,使用二分查找关键字17,具体过程如下:👇👇👇

\left \lfloor \left (1+12 \right )/2 \right \rfloor=6,所以定位到数组下标为6的元素的位置,比较得1718,可知关键字在前半部分[15]

\left \lfloor \left ( 1+5 \right )/2 \right \rfloor=3,所以定位到数组下标为3的元素的位置,比较得1710,可知关键字在后半部分[45]

\left \lfloor \left ( 4+5 \right )/2 \right \rfloor=4,所以定位到数组下标为4的元素的位置,比较得1716,可知关键字在后半部分[55]

此时二分查找的区间只剩一个元素,即第五个元素17,比较得17=17,所以查找成功。(一共进行了4次比较)

二分查找在查找成功时,关键字得比较次数最多为:\left \lfloor log2n \right \rfloor+1。时间复杂度为O\log 2n)。


7.1.2 散列表


7.2 排序

7.2.1 直接插入排序

7.2.2 希尔排序

7.2.3 简单选择排序

7.2.4 堆排序


7.2.5 冒泡排序


7.2.6 快速排序


7.2.7 归并排序

7.2.8 基数排序

7.2.9 排序算法的时间复杂度、空间复杂度及稳定性

8.算法


8.1 算法的特性

8.2 算法的时间复杂度和空间复杂度

相关文章
|
19天前
|
存储 算法 关系型数据库
深入理解InnoDB索引数据结构和算法
1. **索引定义**:索引是提升查询速度的有序数据结构,帮助数据库系统快速找到数据。 2. **索引类型**:包括普通索引、唯一索引、主键索引、空间索引和全文索引,每种有特定应用场景。 3. **数据结构**:InnoDB使用B+树作为索引结构,确保所有节点按顺序排列,降低查询时的磁盘I/O。 4. **B+树特性**:所有数据都在叶子节点,非叶子节点仅存储索引,提供高效范围查询。 5. **索引优势**:通过减少查找数据所需的磁盘I/O次数,显著提高查询性能。 **总结:**InnoDB索引通过B+树结构,优化了数据访问,使得查询速度快,尤其适合大数据量的场景。
27 0
深入理解InnoDB索引数据结构和算法
|
23天前
|
存储 算法 Serverless
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
46 0
|
11天前
|
存储 算法 索引
【算法与数据结构】队列的实现详解
【算法与数据结构】队列的实现详解
|
15天前
|
算法
【算法与数据结构】二叉树(前中后)序遍历2
【算法与数据结构】二叉树(前中后)序遍历
|
22天前
|
存储 算法 Java
Java数据结构与算法-java数据结构与算法(二)
Java数据结构与算法-java数据结构与算法
64 1
|
1天前
|
算法 数据可视化 Python
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
|
2天前
|
算法 定位技术 Windows
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
10 4
|
11天前
|
算法 索引
【算法与数据结构】深入二叉树实现超详解(全源码优化)
【算法与数据结构】深入二叉树实现超详解(全源码优化)
|
11天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
15天前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解