摘要:
最小生成树是数据结构中图的一种重要应用,它的要求是从一个带权无向完全图中选择n-1条边并使这个图仍然连通(也即得到了一棵生成树),同时还要考虑使树的权最小。 为了得到最小生成树,人们设计了很多算法,最著名的有prim算法和kruskal算法。时间复杂度分别为O(n2)和O(eloge) 假设V是途中顶点的集合,E是边的集合,T是最小生成树的边的集合。U为在最小生成树上点的集合,那么V-U为不在最小生成树上的点的集合。 Prim算法的基本思想: 1.首先选取一个点作为起始点,比如说1顶点,加入到U集合中 2.在所有u∈U,v∈V-U的边(u,v)∈E中,找一条权最小的边(u,v),... 阅读全文
摘要:
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 归并算法的基本思想:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤3直到某一指针达到序列尾将另一序列剩下的所有元素直接复制到合并序列尾 下面我们来分析一下归并排序的时间复杂度,一趟归并需要将A[1]~A[n]中相邻的长度为h的有序序列进行两两归并。并将结果放到B[1]~B[n]中,这需要将待排序... 阅读全文