软考--数据结构

359 阅读4分钟

一、基础知识

1、算法时间复杂度

常对幂指阶

image.png

image.png

image.png

image.png

2、算法空间复杂度--》定义了多少空间

image.png

3、渐进符号

image.png

image.png

4、递归的时间复杂度和空间复杂度


int i = 0;

while(i <= n){

}

return n*(f(n-1));

}

image.png

递归主方法

image.png

image.png

image.png

二、线性结构

1、线性表

1、定义与特点

image.png

2、存储方式

image.png

image.png

查找操作的时间复杂度

image.png

最好、最坏、平均都是O(1)

插入、删除操作的时间复杂度:

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

注意:在没有说明什么时间复杂度,默认是平均。

image.png

image.png

2、栈和队列

image.png

1、栈以及其定义、基本运算和存储结构

image.png

image.png

image.png

image.png

image.png

image.png

2、队列以及其定义、基本运算和存储结构

image.png

image.png

image.png

image.png

image.png

image.png

image.png

3、栈和队列的联动

image.png

image.png

3、串

image.png

image.png

image.png

1、串的模式匹配和朴素匹配

image.png

2、手算next值

image.png

de2ca5dff3048380e5bcc13e8c18a63.jpg

image.png

image.png

三、数组、矩阵

1、数组

1、定义和基本运算

image.png

2、数组的顺序存储

image.png

image.png

2、矩阵

image.png

1、特殊矩阵

1、对称矩阵

image.png

2、三对角矩阵

image.png

image.png

2、稀疏矩阵

image.png

image.png

image.png

image.png

三、树

1、树以及二叉树的定义

image.png

image.png image.png

image.png

1、树的性质

image.png

image.png

image.png

image.png

image.png

image.png

2、二叉树的性质与存储结构

1、性质

image.png

image.png

image.png

image.png

2、存储结构

1、顺序存储

image.png

image.png

2、链式存储

image.png

image.png

image.png

3、二叉树的遍历

image.png

image.png

image.png

image.png

4、平衡二叉树

image.png

5、二叉排序树(二叉查找树)

image.png

image.png

image.png

image.png

6、最优二叉树(哈夫曼树)-->带权路径最短的树

image.png

image.png

最优二叉树的特点 1、只用度为0、2的结点 2、总结点数为 2n-1(n为需要构成最优二叉树的集合的元素个数)

1、如何构造最优二叉树

image.png

image.png

2、哈夫曼编码(左0右1,从根到尾)

image.png

3、哈夫曼编码的压缩比

image.png

image.png

image.png

image.png

image.png

image.png

7、线索二叉树(了解即可--干扰选项)

image.png

四、图

image.png

无论是有向图还是无向图都满足 总度数 = 2e (e为边数)

1、图的定义

1、有向图(用<>表示)

image.png

2、无向图(用()表示)

image.png

3、完全图(每个顶点与n-1个顶点都有边)

1、有向完全图

含有n个顶点的有向完全图具有 n(n-1) 条边

2、无向完全图

含有n个顶点的有向完全图具有 (n(n-1))/ 2 条边

4、连通图(针对无向图)

  • 顶点之间有一条任意长度的路径即可(有路径即可,不强调点对点之间)
  • 边数最多(无向完全图):(n(n-1))/ 2 条
  • 边数最少(形成一个简单路径):n-1 条

5、强连通图(针对有向图)

  • 顶点之间有一条任意长度的路径即可(有路径即可,不强调点对点之间)
  • 边数最多(无向完全图):(n(n-1) 条
  • 边数最少(形成一个闭环):n 条

注意:

  • 无向完全图一定是连通图,但连通图不一定是无向完全图
  • 有向完全图一定是强连通图,但强连通图不一定是有向完全图

image.png

image.png

2、图的存储

1、邻接矩阵

image.png

特点:

  • 无向图的邻接矩阵是对称的,有向图不一定。
  • 有向图的邻接矩阵中非零元素有e个,无向图的邻接矩阵中非零元素右2e个(e是边数)。

2、邻接表

image.png

image.png

image.png

3、网

image.png

4、图的遍历

image.png

1、广度遍历-->用邻接矩阵存储时间复杂度O(n^2),使用邻接表存储时间复杂度O(n+e)

image.png

2、深度遍历-->使用邻接矩阵存储时间复杂度O(n^2),使用邻接表存储时间复杂度O(n+e)

只要当前的节点依旧存在边并且有未访问的节点,就一直往下访问

image.png

image.png

image.png

5、拓扑排序及其算法

image.png **简而言之,就是从无入度的结点开始淘汰,淘汰时连同对应的出度一起淘汰,直至最后一个**

image.png

image.png

image.png

image.png

image.png

五、查找

查找

  • 静态查找表:顺序查找、折半(二分)查找、分块查找
  • 动态查找表:二叉排序树、平衡二叉树、B_树、哈希表

1、顺序查找

image.png

image.png

2、折半查找-->需要先进排序-->最多比较次数: log(n+1) 取上整

image.png

image.png

image.png

3、哈希表-->冲突是不可避免

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

六、排序

1、直接插入排序-->稳定,不归位

image.png

image.png

image.png

image.png

image.png

2、冒泡排序-->稳定,归位

image.png

3、简单选择排序-->不稳定,归位

当前趟数-1:由于趟数从1开始的,而存元素的空间的下标是从0开始的。

image.png

4、希尔排序-->不稳定,不归位

image.png

5、快速排序-->不稳定,归位

image.png

image.pngimage.png

image.png

image.png

6、堆排序

image.png

image.png

image.png

image.png

image.png

7、归并排序

用空间换时间 image.png

image.png

image.png

image.png

image.png

image.png

image.png

8、计数排序-->排序序列中只有0--9待排序数

image.png

总结

image.png

image.png

image.png

杂题

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png