与普里姆算法不同的是,克鲁斯卡尔算法是从边的角度出发构造最小生成树的,将所有的边按照权值从小到大进行排序,然后依次加入最小生成树,但是加入时需要判断有没有构成环路,如果构成环路了就放弃这条边,接着考虑下一条边。
定义一个边的结构体:
typedef struct
{
int begin;
int end;
int weight;
}Edge;
void SortEdge(MGraph G,Edge edges[])
{
int i,j,k=0;
for (i=0;i
edges[j+1].weight)
{
Edge temp=edges[j];
edges[j]=edges[j+1];
edges[j+1]=temp;
}
}
}
}