- 博客(10)
- 资源 (20)
- 收藏
- 关注
原创 名称:拓扑排序
/* 名称:拓扑排序 说明:对于拓扑排序来说,其针对的一般是AOV网。其基本的算法(本程序中实现的)类似于广度优先遍历只不过在遍历的时候要修改顶点的入度数量。当某个顶点的入度数量为0时,则说明可以输出其顶点,并把以此顶点为源点的弧删去(也就是以此弧为终点的顶点的入度数减1)。 在本程序中使用的是临接矩阵的结构,时间复杂度为O(V2)。实际上比较好的存储结构是用逆临
2018-01-07 21:24:03 130
原创 名称:求最短路径
/* 名称:求最短路径 说明:本实验包括 1.利用广度优先遍历统计单源最短路径 2.迪杰斯特拉算法求解有向图的单源最短路径 3.弗洛伊德算法求解所有顶点之间的最短路径*/#include#include "graph.h"using namespace std;////访问标志数组(用作标记当前结点是否已访问)bool visited2[Max
2018-01-07 21:22:34 175
原创 名称:广度优先遍历
/* 名称:广度优先遍历 说明:广度优先遍历类似于树中的层次遍历,所以其需要使用到一个辅助的队列,用来保存接下来要访问的顶点顺序。其空间复杂度最高为O(V)。 其次,对于广度的优先遍历来说,其主要的时间也是花在访问当前结点的下一个结点上,所以对于用临接矩阵存储结构的图来说,其时间复杂度为O(V2)。对于临接表来说,时间复杂度为O(V+E)。具体的算法采用两种方式都
2018-01-07 21:19:23 262
原创 名称:图的深度遍历DFS。
/* 名称:图的深度遍历DFS。 说明:对于图的深度遍历是树的先序遍历的推广。需要用到递归。不同的是,图会有对已经遍历的接在再次访问的可能,所以需要一个标记数组visited指示当前节点是否已经被访问。 对于图的深度遍历来说,不同的存储结构,其时间复杂度是不一样的。对于临接矩阵来说,访问每个结点的临接点所需的时间是O(V)(V为顶点个数),所以其总的时间复杂度为O(N2)。
2018-01-07 21:17:55 245
原创 名称:图的一些基本相关操作函数
/* 名称:图的一些基本相关操作函数 说明:为了后面图的遍历等高层次一点应用,在这里先敲出一些有待调用基本函数。包括求对应结点的编号,求对应结点的名称、创建树、等等。在这里分别用临接矩阵和临接表实现来了上述操作。*//////////////////////////////临接矩阵构造的图的相关函数操作/////////////////////////////求
2018-01-07 21:16:20 2811 7
原创 名称:图的两种存储方式--邻接矩阵和邻接表
/* 名称:图的两种存储方式–邻接矩阵和邻接表 说明:根据不同的用途,可以用不同的存储结构来描述图。 (1)对于临接矩阵来说,其相对简单些。但是一般来说其存储密度并不高, 对于无向图来说,如果不用 压缩存储,那么至少浪费了一般的空间。其空间复杂度为O(N2)(N为顶点的个数)。比较适合与存储稠密图。 它容易判断两个顶点之间是否有边。但判断一个顶点的
2018-01-07 21:14:38 2528
原创 名称:基数排序
/* 名称:基数排序 说明:基数排序本质上就是多关键排序。在王道中介绍的是通过分配和收集两种操作来达到排序的效果。它不是基于关键字比较的排序算法。但是,你说既然不比较如何能确定两个数的大小呢。其实啊,在我看来,在它分发的过程中已经包含了比较的操作。举个不恰当的例子,我把一些人分成富翁、富人、中产、穷人。虽然这些人没有进行直接的比较,但是通过划分阶级,在这个过程中已经暗含了比较。
2018-01-07 21:10:55 127
原创 名称:二路归并排序
/* 名称:二路归并排序 说明: 二路归并排序即是将两个有序的自序列合并成一个有序的子序列在初始的时候,可以把包含n个元素的序列看成n个自序列,然后两个进行归并,形成[n/2]个子序列,然后在两两归并,知道最终形成一个有序序列。对于二路归并排序来说,其每一躺归并(即在所有的子序列中进行归并)的时间复杂度为O(N),总共要进行O(log2N)躺归并,所以其时间复杂度为O(Nlog2N
2018-01-07 21:04:33 645
原创 名称:选择排序---简单选择排序和堆排序
/* 名称:选择排序—简单选择排序和堆排序 说明: 对于简单选择排序来说,其主要的算法思想是每次从后面没确定的自序列中选取一个最小的(如果是从小到大排序)元素,与当前元素进行交换。其基本的算法时间复杂度为:O(N2)。对于这个算法来说,其比较次数与初始的序列状态没关系,无论如何,都需要进行n(n-2)/2次比较。由于其在确定元素位置的时候用到了交换,这就造成了对于
2018-01-07 21:02:37 534
原创 交换排序---冒泡排序和快速排序
/* 名称:交换排序—冒泡排序和快速排序 说明: 对于冒泡排序来说,其相对来说简单些,每次比较把相邻的元素比较,把较小的移动到前面,总共比较n-1次。最终的时间复杂度为O(N2)。要注意一点的是,在编程实现冒泡排序的时候,如果某一趟排序时,元素之间并没有进行交换,则说明已经有序,则不用在进行接下来的排序。具体的做法是保存一个flag变量。冒泡排序是一个稳定的排序算
2018-01-07 20:58:41 232
HelloOs相关资源
2020-08-15
PlayerTest.zip
2019-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人