数据结构
小小核桃
这个作者很懒,什么都没留下…
展开
-
普里姆算法之JAVA实现
普里姆算法是用来求加权连通图中的最小(代价)生成树的算法。普里姆算法的基本思想是:从图中任意取出一个顶点,把它当成一棵树,然后从与这棵树相接的边中选取一条权值最小的边,并将这条边及其所连接的顶点一同并入这棵树中,重复以上操作,直到所有的顶点都被并入到这棵树中为止。容易看到,这里有一个递归重复进行的过程,所以可以采用递归的思想来完成该算法。首先,需要构造一个图结构,本文以如下图为图结构图的顶...转载 2019-03-06 16:23:34 · 634 阅读 · 0 评论 -
克鲁斯卡尔算法的java实现
克鲁斯卡尔算法的核心思想是:在带权连通图中,不断地在边集合中找到最小的边,如果该边满足得到最小生成树的条件,就将其构造,直到最后得到一颗最小生成树。 克鲁斯卡尔算法的执行步骤: 第一步:在带权连通图中,将边的权值排序; 第二步:判断是否需要选择这条边(此时图中的边已按权值从小到大排好序)。判断的依据是边的两个顶点是否已连通,如果连通则继续下一条;如果不连通,那么就选择使其连通。...转载 2019-03-06 16:57:20 · 2327 阅读 · 1 评论 -
Dijkstra算法
图是不同于树的另一种非线性数据结构。在树结构中,数据元素中间存在着一种层次结构的关系,每一层上的数据可以和下一层的多个数据元素相关,但只能和上一层的单个数据元素相关。也就是说树的数据结构元素之间是一种一对多的关系;在图结构中,数据元素之间的关系则是多对多的关系。树结构可以看作是图的一种特例。邻接矩阵邻接矩阵是用两个数组来表示图,一个数组是一维数组,存储图中的顶点信息;一个数组是二维数组,即矩...转载 2019-03-11 21:47:10 · 279 阅读 · 0 评论 -
弗洛伊德Floyd算法
Floyd算法:用于多源最短路径的求解,算出来的是所有节点到其余各节点之间的最短距离。该算法的思路是:首先初始化距离矩阵,然后从第一个点开始逐渐更新矩阵点值。d[i][j]表示从i点到j点的距离。第k次更新时,判断d[i][k]+d[k][j]与d[i][j]的大小,如果前者小,则更新这个值,否则不变。给一个例子:具体的Floyd实现算法如下:import java.util.Scanne...转载 2019-03-12 10:06:20 · 1592 阅读 · 0 评论 -
快速排序 java
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6...转载 2019-03-20 21:12:52 · 115 阅读 · 0 评论 -
数据结构的排序算法比较
排序算法属于算法中的一种,而且是覆盖范围极小的一种,但彻底掌握排序算法对程序开发是有很大的帮助的。对于一种算法,一般从如下3个方面来衡量算法的优劣。 时间复杂度 空间复杂度 稳定行对于一般的排序,可以使用非常简单的排序来完成,如直接选择,直接插入等,但也有一些非常优秀,但又非常复杂的排序算法,如:快速排序,基数排序等。大致有如下几种: 选择排序:(直接选择排序...转载 2019-03-04 11:34:17 · 605 阅读 · 0 评论 -
大话数据结构--java版
第三章:线性表https://blog.csdn.net/liuquan0071/article/details/50382885原创 2019-04-20 10:30:48 · 5165 阅读 · 1 评论