/*** sample Kruskal.java Description:

* kruskal算法的思想是找最小边,且每次找到的边不会和以找出来的边形成环路,利用一个一维数组group存放当前顶点所在连通图标示(每条最小边,属于一个连通图),直到顶点都找完

* 1.0 YESUN Jul 18,

* 2013 8:48:28 AM Create. ChangeLog:*/

public classKruskal {/*** Description:

*

*@paramargs

* 1.0 YESUN Jul 18, 2013 8:47:10 AM Create. ChangeLog:*/

public static voidmain(String[] args) {int[][] map = new int[][]{

{0,10,MAX,MAX,MAX,11,MAX,MAX,MAX},

{10,0,18,MAX,MAX,MAX,16,MAX,12},

{MAX,MAX,0,22,MAX,MAX,MAX,MAX,8},

{MAX,MAX,22,0,20,MAX,MAX,16,21},

{MAX,MAX,MAX,20,0,26,MAX,7,MAX},

{11,MAX,MAX,MAX,26,0,17,MAX,MAX},

{MAX,16,MAX,MAX,MAX,17,0,19,MAX},

{MAX,MAX,MAX,16,7,MAX,19,0,MAX},

{MAX,12,8,21,MAX,MAX,MAX,MAX,0}

};

kruskal(map);

}static int MAX =Integer.MAX_VALUE;/*** Description: by yesun

*@paramarcs

* 1.0 YESUN Jul 18, 2013 1:42:42 PM Create.

* ChangeLog:*/

public static void kruskal(int[][] arcs) {//顶点个数

int num =arcs.length;//存放对应顶点所在连通图标识

int[] group = new int[num];int sum = 0, n1 = 0, n2 = 0;boolean finished = false;int groupNum = 1;while(!finished) {int min =Integer.MAX_VALUE;//找出所有边中最小值

for(int i = 0; i < num; i++) {for(int j = i+1; j < num; j++) {if(arcs[i][j] > 0 && arcs[i][j]

if (group[i] != group[j] || (group[i] == 0 && group[j] == 0)) {

min=arcs[i][j];

n1=i;

n2=j;

}

}

}

}if(min ==Integer.MAX_VALUE){continue;

}

System.out.println(n1+ " ---> " + n2 + " " +min);

sum+=min;//找到了最小值,设置连通标记

if(group[n1] == 0 && group[n2] == 0){

group[n1]=groupNum;

group[n2]=groupNum;

groupNum++;

}else if(group[n1] > 0 && group[n2] > 0) {int tmp =group[n2];for(int m = 0; m < group.length; m++){if(group[m] ==tmp){

group[m]=group[n1];

}

}

}else{if(group[n1] == 0){

group[n1]=group[n2];

}else{

group[n2]=group[n1];

}

}for(int i = 0; i < group.length; i++) {if(group[i] != group[0]){

finished= false;break;

}else{

finished= true;

}

}if(finished) {break;

}

}

System.out.println(" sum:"+sum);

}

}

kruskal java_Kruskal算法java版相关推荐

  1. java 随机金额_java_微信随机生成红包金额算法java版,最近几年玩得最疯狂的应该是 - phpStudy...

    微信随机生成红包金额算法java版 最近几年玩得最疯狂的应该是发红包了,尤其是过年的时候特别受欢迎,下面写了红包的随机算法,其实挺简单的,仅是提供一种思路,希望可以给大家一些启发. public cl ...

  2. 最小生成树Prim算法Java版

    最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...

  3. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  4. Java算法:牛客网小米笔试真题算法Java版1-40题

    题号 题目 知识点 难度 通过率 XM1 小米Git 树 困难 10.22% XM2 懂二进制 中等 29.90% XM3 风口的猪-中国牛市 动态规划 较难 18.73% XM4 电话号码分身 中等 ...

  5. Java算法:华为机试算法第二版(上),华为算法Java版

    牛客网华为机试练习题 文章目录 牛客网华为机试练习题 动态规划问题详解 前言 生活中的动态规划 2. 几个简单的概念 3. DP的典型应用:DAG最短路 4. 对DP原理的一点讨论 5. 例题:最长上 ...

  6. 跑胡子c语言算法,跑胡子胡牌算法Java版(带赖子、基于回溯算法)

    跑胡子规则 跑胡子,小写"一"到"十"各4张共40张,大写"壹"到"拾"各4张共40张. 砌牌:跑胡子为3人同玩,庄家砌 ...

  7. kruskal java_Kruskal算法(三)之 Java详解

    最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...

  8. 最小生成树之克鲁斯卡尔算法 ( java版)

    1 图数据如下 二  Java代码 package leaning.graph;import java.util.ArrayList; import java.util.List;import lea ...

  9. Java算法:LeetCode算法Java版合集1111-1588题

    1111. 有效括号的嵌套深度 题目描述 有效括号字符串 仅由 "(" 和 ")" 构成,并符合下述几个条件之一: 空字符串 连接,可以记作 AB(A 与 B ...

最新文章

  1. 10年,4600万台!树莓派,生日快乐
  2. hdu 2243 考研路茫茫——单词情结(AC自动+矩阵)
  3. 用DMA方式从串行USART口连续接收数据,怎样确认收到一个完整的包讨论
  4. Uva10294 Arif in Dhaka (置换问题)
  5. android 進度條_Android更新下載進度條 | 學步園
  6. 嵌入式开发过程中结构体字节对齐问题pragma pack(1)
  7. 默认权限umask、文件系统权限、特殊权限
  8. paip.C#.net TIMER不起作用在用户控件中
  9. ubuntu硬盘装机_配置系统总结
  10. 开源GIS(八)——开源GIS简史
  11. 2019,一年一度的高考季来临,作文又成热门话题
  12. python syntactic suger
  13. 什么是智能无损网络?
  14. 【arcgis中两种路网密度计算结果对比】
  15. 电商平台用户行为分析—Tableau
  16. jenkins中文语言设置
  17. Python 条件运算符的嵌套来完成此题:学习成绩
  18. 做好项目信息管理,是优秀项目经理的必备技能
  19. Petalinux-conifg 错误失败
  20. 扭矩扭力测量——扭矩传感器

热门文章

  1. php+mysql 留言板系统 学生适用
  2. 为docker设置国内镜像
  3. 计算机科学与技术大学博士后,清华大学博士后
  4. Linux中CentOS 7如何联网?
  5. HEVC/H.265面试问题准备(PART 3. 环路滤波+熵编码)
  6. 快速解决java端口占用
  7. LTspice基础教程-009.LTspice波形测量
  8. Smith(史密斯)数的求法
  9. 【三维目标检测】Second 模型 (一)
  10. 8、数值分析与matlab