![](https://img-blog.csdnimg.cn/20190927235950793.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
----数据结构 (C/C++实现)
syrdbt
这个作者很懒,什么都没留下…
展开
-
最小生成树(Prim)学习、代码实现
目录1. 概述2. 代码实现3. 代码验证:hdu 4463Outlets参考文献1. 概述初始化一个数组U,存储已经遍历的节点(数组U初始化可以为任何一个,一般为v1),不断的找与“已遍历节点距离最短”的节点加入到数组U中,等到所有的节点都加入到U中,所选择的n-1条“最短边”和n个节点即为该树的最小生成树。举一个例子,图中有 6个节点(V1,V2、V3...原创 2017-10-09 20:50:22 · 1316 阅读 · 2 评论 -
最短路 Floyed 代码实现
1.概述Floyed多源最短路,即每个点都为节点,简单的说就是求每对节点之间的最短距离。基本算法思想:Floyed的核心代码只有如下几行,不断更新从节点i到节点j的距离,这里的更新条件:“节点i到节点k的距离” + “节点k到节点j的距离”小于“当前节点i到节点j的距离” 。 for(int k=1; k<=n; k++) { ...原创 2017-10-11 21:31:24 · 428 阅读 · 0 评论 -
最短路 dijkstra 学习、代码实现
1.概述dijkstra单源最短路,单源最短路即把一个点当作源点,求得这个点到其它点的最短路。算法的基本思路:首先用一个辅助数组pos[ ], pos[i]就是源点到结点i的最短距离,如果邻接矩阵存储,pos[ ]也就是 a[i][ ]。一个标记数组vis[], vis[i]为true则已经找到源点到这个点的最短距离,为false则还未确定源点到这个点的最短距离...原创 2017-10-10 14:31:02 · 423 阅读 · 0 评论 -
kmp代码实现
目录1. 代码实现2. oj题进行代码验证2.1 验证kmp_index ,求模式串在主串 pos位置 字符之后的位置2.2 验证kmp_count,求模式串在主串中出现了几次1. 代码实现#include <iostream>#include <cstring>using namespace std;const int ...原创 2018-04-28 21:35:26 · 3260 阅读 · 5 评论 -
Bellman-Ford 代码实现
目录1. 算法学习1.1存在负环就没有最短路1.2 Bellman-Ford的适用情况1.3 核心算法思想2. 代码实现3. 代码检验,poj 1860Currency Exchange1. 算法学习1.1存在负环就没有最短路首先需要理解"存在负环就没有最短路",原因:你可以一直在这个负环打圈,路径权值会不断减小,不断地趋近于负无穷...原创 2019-03-17 11:03:56 · 1161 阅读 · 0 评论 -
二分查找代码实现
功能:在一个长度为 n 的数组中 查询某个值 在这个数组中的位置。时间复杂度: log2(n)下面的算法应该使用于有序数组(升序),返回 [left, right) 范围内 最后一个小于等于 e 的数 的下标 。EG: b[5] = {1, 2, 3, 3, 5}; find(0, 5, 3) = 4数组int find(int left,int right, l...原创 2018-05-05 22:06:29 · 4450 阅读 · 0 评论 -
最小生成树 Kruskal 学习、代码实现
1.概述Kruskal最小生成树算法,算法的大概思路为:将所有边升序排列,然后从值最小的边开始取边,如果当前的边添加到已取的边中不构成环,则取该边,否则舍弃这条边,去判断下一条边,重复上述操作一直到取到n-1条边,这n-1条边和n个节点就是最小生成树。一个例子,基于这样的一个图:利用 Kruskal生成最小生成树的过程如下所示:2.代码实现Kruskal最...原创 2019-04-13 21:44:00 · 485 阅读 · 0 评论 -
归并排序(C++代码实现)
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否...原创 2017-09-11 21:04:10 · 1426 阅读 · 0 评论