问答题 编写克鲁斯卡尔算法求无向连通网的最小生成树,并分析你所编写的算法的时间和空间复杂度。
【正确答案】正确答案:#include #define MAX VERTEX NUM 10 #define 1NFINITY 1000 typedef st ruet Edge { int weight; }Edge,EdgeMatrix[MAX VERTEX NUM][MAX VERTEX NUM]; typedef struct MGraph { EdgeMatrix edges; int vexnum; int edgenum; }MGraph; typedef struct VexGroup { int vertex; int group; }VexGroup; typedef struct EdgeMuster { int tail; int head; int weight; bool used; }EdgeMuster; /*对图进行初始化*/ void InitializeMG(MGraph&G) { G.edgenum=G.vexnum=0; for(int i=0;i\t\t%d\n”,E[k].tail,E[k] .head,E Ek].weight); } } void main() { MGraph G: InitializeMG(G); CreateGraph(G): MiniSpanTree—Kruskal(G); } 时间、空间复杂度分析:排序的代价、检查边所关联的两个顶点是否在同一集合中 以及集合合并的代价。
【答案解析】