ACM_算法
文章平均质量分 71
In_Youth
-青春
展开
-
ACM_Kruskal算法
克鲁斯卡尔算法证明:从边出发,从所有的边当中选一条最小的边(如果最小的边不止一条,则任选一条即可)然后判断这条边的两个端点是否在同一棵树中(并查集判断),如果已经在同一棵树中,则舍去这条边,因为在这之前已经有一条比这条还短的边连接这两个节点了,如果不在,则把这两个节点连到一棵树中,并且记录下这条边,以此类推,直到边数达到n-1,此时n个点已经在同一棵树中了,算法结束。克鲁斯卡尔算法的时间复杂度为O(eloge)(e为网中边的数目)【怎么算出来的,百度一下吧= =】原创 2015-07-20 15:40:00 · 914 阅读 · 0 评论 -
ACM_Prim算法
普里姆算法证明:以任意一个顶点作为树的根(这里以1作为根)更新lowcase数组,找到里面最小值,并且这条边一定是最小生成树里面的边(最小生成树要包括所有的顶点,而想要包括这个顶点,只有这几条边,所以一定选择最小的边连接这个顶点)然后以这条边连接的另一个顶点更新lowcase数组,并把该顶点标记为已在树里面,再把已经在树里的点看成一个整体,再找此时lowcase数组里的的最小值,以此类推,直到所有原创 2015-07-20 15:38:41 · 1108 阅读 · 0 评论 -
ACM_SPFA算法
SPFA算法:首先源点到源点的距离为0,然后用源点对其他点进行松弛操作(更新操作),若松弛成功,表明源点到其的路径变小了,那么该点有可能能作为中间点松弛其他点,所以得将其入队列(如果它不在队列里面的话)某个点得到了松弛,如果它在队列里面,那么它能松弛的点会在接下的过程中得到松弛,如果它在这之前已经松弛了其他点,那么由于它受到了松弛,则那些它可以松弛的点将会进一步被松弛,所以它得重新入队列;如果没有原创 2015-07-20 15:34:09 · 950 阅读 · 0 评论 -
ACM_快速排序算法
每次以数组第一个数为基数,从数组两端往中间找,小于基数的数放在数组的左边,大于它的数放在数组的右边,当i == j的时候,查找结束,将基数赋值到这个位置,这个数在数组中的位置就是这个,确定了。然后从这个数的左边和右边开始递归,直到所有的数都排完序。时间复杂度:nlog2n(最好,平均)、n2(最坏)#include#includeusing namespace std;void sort原创 2015-07-20 14:53:21 · 558 阅读 · 0 评论 -
ACM_Floyd-Warshall (Floyd) 算法
Floyd算法相当于Dijkstra算法的扩展版,由原来的一维数组到现在的二维数组,所以Floyd算法可以求得任何一个点到其他所有点的最短路径;for循环中k,i,j的顺序是不能改变的:k是中间点,每一个中间点都有可能能够更新任意两点之间的距离,所以,最外层for循环每轮到一个k值都得把整个二维数组跑一遍,能用k更新的就更新!#include#includeusing namespac原创 2015-07-20 15:29:06 · 327 阅读 · 0 评论 -
ACM_Dijkstra算法
Dijkstra算法(单源最短路算法):计算某一个节点到其他所有节点的最短路径;特点:以起始点为中心向外层层扩展,直到把所有的点都扩展到(因为要把所有的点都扩展到,所以效率比较低)证明:(先证明最短路径的最优子结构:i->k->j,如果i到j是最短路径,那么i->k也是最短路径,用反证法证明就OK)先在起始点可达的点里面选出一条最小边,可知,这条边就是起始点到该节点的最短路径(原创 2015-07-20 15:17:52 · 571 阅读 · 0 评论 -
ACM_Bellman-ford算法
Bellman_ford算法:也是求单源最短路径,它与Dijkstra算法的区别是,它可以检查是否有负权值边的存在;如果有负权值边的话,是不存在最短路径的,因为一个数+负数,一定会更小,所以dis数组会不断更新;#include#includeusing namespace std;#define INF 9999999struct node{ int u,v,w;};//原创 2015-07-20 15:31:22 · 365 阅读 · 0 评论 -
ACM_归并排序算法
将数组中的数不断的递归,直到只剩一个数为止(因为一个数自然是有序的),然后再回溯排序(并),另外再用一个数组T存储当前排好序的数,然后再赋值给原数组A,直到所有的数都排好了序。时间复杂度:nlog2n(最好,最坏,平均)#include#includeusing namespace std;void merge_sort(int *A,int x,int y,int *T) //A是原创 2015-07-20 14:49:28 · 505 阅读 · 0 评论