一、图
- 定义
1)图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合
Eg:
1.1)无向图
1.2)有向图
1.3)简单图&多重图
1.4)完全图
1.5)子图
定义:设有两个图G=(V,E)和G’=(V’,E’),若V是V的子集,且E’是E的子集,则称G’为G的子图,且若V(G) = V(G’)则称G’为G的生成子图
Tips:相同的图也是子图,只有几个点的也是子图
2)图不能为空
3)连通与强连通
4)连通图与强连通图
5)连通分量与强连通分量
6)生成树、生成森林
7)顶点的度
无向图A点的度为3,B为2
有向图A点的出度为2,入度为2
有向图的总和为TD(V)=OD(V)+ID(V)
8)网
9)稠密图稀疏图
10)有向树
11)路径
12)路径长度
13)回路
- 储存与操作
1)邻接矩阵法
1.1)网
1.3)代码
2)邻接表法
2.1)有向图
2.2)无向图
2.3)代码
3)十字链表
3.1)有向图
3.2)代码
4)邻边多重表
4.1)定义
4.2)代码
-
基本操作
4.1)判断是否存在边
4.2)列出结点X相邻的边
4.3)插入结点
4.4)删除结点
4.5)添加边
4.6)删除边
-
广度优先搜索
5.1)定义
1.1)类似于树的层次遍历
1.2)代码
2.1)无权图单源最短路径问题
定义从顶点u到顶点v的最短路径d(u,v)为从u到v的任何路径中最少的边数;若从u到没有通路,则d(u,v)=oo。
2.2)代码
-
深度优先搜索
6.1)定义
1.1)类似于树的先序遍历
2.1)代码
-
最小生成树
7.1)定义:连通图包含全部顶点的一个极小连通子图
7.2)性质
1)最小生成树不一定唯一,即最小生成树的树形不一定唯一。当带权无向连通图G的各边权值不等时或G只有结点数减1条边时,MST唯一。
2)最小生成树的权值是唯一的,且是最小。
3)最小生成树的边数为顶点数减1
7.3)理解
7.4)代码
11.最短路径
11.1)Dijikstra算法 带权图单源最短路径
11.1.1)理解
11.1.3)代码
11.2)Floyd算法 各顶点之间的最短路径
11.2.1)思想
11.2.2)代码
12.拓扑排序
12.1)定义
12.2)思想
12.3)代码
13.关键路径
13.1)定义
从原点到汇点最大路径长度的路径称为关键路径,关键路径上的活动为关键活动。
13.2)思想
1)事件Vk的最早发生时间ve(k)【路径最长的】
2)事件Vk的最迟发生时间v,(k)【路径最短的】
3)活动aj的最早开始时间e(i)
4)活动aj的最迟开始时间l(i)
5、活动a;的差额di)= (i)-e(i)
二、查找
-
基本概念
1)查找:在数据集合中寻找满足某种条件的数据元素的过程。
2)查找表:用于查找的数据集合,由同一种数据类型(或记录)的组成,可以是一个数组或链表等数据类型
3)查找表的操作
4)关键字:数据元素中唯一标识该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的
5)平均查找长度:查找时,关键字比较次数的平均值:
-
顺序查找
2.1)又称线性查找,主要用于在线性表中进行查找。
2.2)代码
-
折半查找
3.1)又称二分查找,仅适用于有序的顺序表
3.2)思想
3.3)代码
三、排序
-
基本概念
-
直接插入排序
2.1)定义
2.2)代码
-
折半插入排序
3.1)代码 -
希尔排序
4.1)思想
4.2)代码
-
冒泡排序
5.1)基本思想
5.2)代码
-
快速排序
6.1)定义
6.2)思路
6.3)代码
-
选择排序
7.1)思想
7.2)代码
-
堆排序
8.1)思想
8.2)代码