You need to enable JavaScript to run this app. Java实现Kruskal算法:基于输入加权矩阵展示邻接矩阵的方法
优惠活动
大模型
产品
解决方案
定价
更多

Java实现Kruskal算法:基于输入加权矩阵展示邻接矩阵的方法

邻接矩阵展示功能实现方案

实现逻辑

你的代码中二维数组是从索引1开始存储顶点邻接关系的,要实现示例中带行/列表头、排版整齐的邻接矩阵,只需要在算法修改原矩阵前,按固定格式逐行打印表头和矩阵元素即可。

关键注意:你的krkl方法会直接修改传入的原始权重矩阵——把已选中的边权重设为99避免重复选择,必须在调用krkl方法之前完成邻接矩阵的打印,否则展示的是被算法篡改后的错误矩阵。

可直接复用的打印代码

将以下代码插入到main方法中「用户输入完邻接矩阵权重、调用k.krkl(a,n)」的位置即可:

// 格式化打印邻接矩阵
System.out.println("===== 输入的加权邻接矩阵 =====");
// 打印列顶点表头:左上角预留对齐空位
System.out.printf("%4s", "");
for (j = 1; j <= n; j++) {
    System.out.printf("%4d", j);
}
System.out.println();
// 逐行输出矩阵内容
for (i = 1; i <= n; i++) {
    // 打印行顶点表头
    System.out.printf("%4d", i);
    // 打印当前行对应的邻接权重值
    for (j = 1; j <= n; j++) {
        System.out.printf("%4d", a[i][j]);
    }
    System.out.println();
}
System.out.println();

实际输出效果

运行后的排版和你给出的示例完全匹配:

===== 输入的加权邻接矩阵 =====
          1   2   3   4
       1   1   0   0   0
       2   0   1   1   0
       3   0   1   1   0
       4   0   0   0   1

代码中通过printf固定每个数值占4个字符宽度,无论边权是个位数还是多位数,都能保持排版对齐,不会出现文字错位的问题。

可后续优化的细节

  • 当前代码中硬编码的99作为无穷大判断阈值,一旦图的边权超过99就会出现逻辑错误,后续可替换为Integer.MAX_VALUE提升代码通用性。
  • 现有的find方法没有做路径压缩优化,针对顶点数较多的图运行效率偏低,属于算法进阶阶段可调整的内容,不影响当前展示功能的正常实现。

内容的提问来源于stack exchange,提问作者ZenXiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 23:06:08