算法
_Shorey_
这个作者很懒,什么都没留下…
展开
-
希尔排序的C++实现
概念转自:http://blog.csdn.net/morewindows/article/details/6668714该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况)原创 2015-04-08 21:02:11 · 424 阅读 · 0 评论 -
快速排序的C++实现
快速排序是对冒泡排序的改进,改进的重点是:在冒泡排序中记录的比较和移动是在相邻位置进行的,记录每次交换只能前移或者后移一个位置,所以总的比较次数和移动次数比较多。快速排序中,记录的比较和移动是从两端向中间进行的,关键码较大的记录一次就能从前面移动到后面,关键码较小的记录一次就能从后面移动到前面,记录移动的距离较远,从而减小了总的比较次数和移动次数。基本思想:首先选取一个轴值,将待排序的记录分割原创 2015-04-08 21:25:10 · 338 阅读 · 0 评论 -
选择排序的C++实现
简单选择排序为最简单的选择排序法,基本思想为:将待排序列分为有序区和无序区,每次排序都在无序区中寻找出最小的关键值放在无序区的最前面和已有的有序区构成新的有序区,然后继续对无序区的元素进行选择直到排序完毕。C++实现如下:/************************************************************************* > File原创 2015-04-09 09:14:08 · 10443 阅读 · 1 评论 -
堆排序的C++实现
/************************************************************************* > File Name: HeapSort.cpp > Author: Shorey > Mail: shoreybupt@gmail.com > Created Time: 2015年04月09日 星期四 10时25原创 2015-04-09 12:57:01 · 300 阅读 · 0 评论 -
Dijkstra算法(单源最短路径)
转自:http://www.cnblogs.com/dolphin0520/archive/2011/08/26/2155202.htmlDijkstra算法(单源最短路径) 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该性质转载 2015-04-25 16:03:18 · 317 阅读 · 0 评论 -
Prim算法
Prim算法用于生成最小生成树,根据的性质为最小生成树的MST性质MST性质:假设G=(V,E)是一个无向联通网络,U是顶点集合V的一个非空子集,若(u,v)是一条有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。Prim算法思想:设G=(V,E)是一个无向连通图,令T=(U,TE)(U代表顶点,TE代表边)是G的最小生成树。T的初始状态为U={原创 2015-04-27 11:22:43 · 453 阅读 · 0 评论 -
Floyd算法
参考:http://www.cnblogs.com/twjcnblog/archive/2011/09/07/2170306.html参考:http://www.cnblogs.com/dolphin0520/archive/2011/08/27/2155542.htmlFloyd算法用于求有向图中任意两点间的最短路径问题。主要需要的参数为图的邻接矩阵。基本思想:任意一点i到j的最转载 2015-04-27 10:04:38 · 387 阅读 · 0 评论 -
Dijkstra算法(单元点最短路径)
Dijkstra算法解决图中某特定点到其他点的最短路径。迪杰斯塔拉(Dijkstra)算法思想:按路径长度递增的次序产生最短路径的算法。设集合S存放已经找到最短路径的顶点,V为所有节点的集合,S的初始状态只包含源点V0,对Vi∈V-S。假设从源点V0到Vi的有向边为最短路径,以后每求得一条最短路V0……Vk,就把Vk加入集合S里,并将路径V0……Vk,Vi与原来的假设比较,取路径较短者原创 2015-04-27 10:42:25 · 2495 阅读 · 0 评论 -
归并排序的实现
转自:http://blog.csdn.net/morewindows/article/details/6678165/归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行转载 2015-06-14 15:30:15 · 412 阅读 · 0 评论