本文为克鲁斯卡尔算法模板讲解
首先原理,后部讲解代码
原理介绍:
克鲁斯卡尔算法用于一个无向图,每条边都标有权值,求最小生成树,最小生成树的字面解释就是将图上所有节点连通且不成环,最终的每条边的权值之和是最小。
文字描述:首先将所有边去除,只剩下互不相连的点,然后把去除的边,按照权值大小进行排序,从小到大排序,从小到大遍历这些边,当遍历一条边满足:边的两个顶点原本互不连通,则把这条边加入到最小生成树,并且这条边的两个顶点因此而连通了,附带的顶点也顺带连通了。不断重复这样的操作,直到选择了n-1条边(n是顶点数目)
核心算法:1 :用结构体存储边的权值和两个顶点
2:用并查集实现检测两个点是否连通,顺带连通功能
3:重写快速排序函数
并查集