创建一个类EData,它的对象实例就表示一条边
public class EData {
char start;//边的一个点
char end;//边的另外一个点
int weight;//边的权值
//构造器
public EData(char start, char end, int weight) {
this.start = start;
this.end = end;
this.weight = weight;
}
//重写toString方法,便于输出边信息
@Override
public String toString() {
return "EData{" +
"start=" + start +
", end=" + end +
", weight=" + weight +
'}';
}
}
main方法及核心算法方法:
public class KruskalCase {
private int edgeNum;//边的个数
private char[] vertexs;//顶点数组
private int[][] matrix;//邻接矩阵
//使用inf 表示两个顶点不能连同
private static final int INF = Integer.MAX_VALUE;
public static void main(String[] args) {
char[] vertexs = {
'A', 'B', 'C', 'D', 'E', 'F', 'G'};
int[][] matrix = {
{
0, 12, INF, INF, INF, 16, 14},
{
12, 0, 10, INF, INF, 7, INF},
{
INF, 10, 0, 3, 5, 6, INF},
{
INF, INF, 3, 0, 4, INF, INF},
{
INF, INF, 5, 4, 0, 2, 8},
{
16, 7, 6, INF, 2, 0, 9},
{
14, INF, INF, INF, 8, 9, 0}
};
//创建对象
KruskalCase kruskalCase = new KruskalCase(vertexs, matrix);
//输出构建的是否正确
kruskalCase.print();
// EData[] edges = kruskalCase.getEdges();
// System.out.println(Ar