易截截图软件、单文件、免安装、纯绿色、仅160KB

最小生成树 Kruskal算法 java代码实现

/*
*日期:2010-04-18 20:02
*开发者:heroyan
*联系方式:zndxysf@126.com
*功能:无向图最小生成树Kruskal算法实现案例
*/
import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
public class Kruskal{
private static int MAX = 100;
private ArrayList<Edge> edge = new ArrayList<Edge>();//整个图的边
private ArrayList<Edge> target = new ArrayList<Edge>();//目标边,最小生成树
private int[] parent = new int[MAX];//标志所在的集合
private static double INFINITY = 99999999.99;//定义无穷大
private double mincost = 0.0;//最小成本
private int n;//结点个数

public Kruskal(){}

public static void main(String args[]){
Kruskal sp = new Kruskal();
sp.init();
sp.kruskal();
sp.print();
}
//初始化
public void init(){
Scanner scan = new Scanner(System.in);
int p,q;
double w;

System.out.println("spanning tree begin!Input the node number:");
n = scan.nextInt();
System.out.println("Input the graph(-1,-1,-1 to exit)");

while(true){
p = scan.nextInt();
q = scan.nextInt();
w = scan.nextDouble();
if(p < 0 || q < 0 || w < 0){
break;
}
Edge e = new Edge();
e.start = p;
e.end = q;
e.cost = w;
edge.add(e);
}

mincost = 0.0;

for(int i = 1; i <= n; ++i){
parent[i] = i;
}
}
//集合合并
public void union(int j, int k){
for(int i = 1; i <= n; ++i){
if(parent[i] == j){
parent[i] = k;
}
}
}
//prim算法主体
public void kruskal(){
//找剩下的n-2条边
int i = 0;
while(i < n-1 && edge.size() > 0){
//每次取一最小边,并删除
double min = INFINITY;
int tag = 0;
Edge tmp = null;
for(int j = 0; j < edge.size(); ++j){
Edge tt = edge.get(j);
if(tt.cost < min){
min = tt.cost;
tmp = tt;
}
}
int jj = parent[tmp.start];
int kk = parent[tmp.end];
//去掉环
if(jj != kk){
++i;
target.add(tmp);
m


相关文档:

JAVA和JSP之间的关系

我现在给你一个JAVA和JSP之间的关系,以及JAVA的完整认识
JAVA分为J2EE,J2SE.J2ME,下面分别介绍:
一.J2EE:Java 2 Platform Enterprise Edition 企业版,用于企业应用,支持分布式部署。 
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,
它对开发基于Web的多层应用提供了功能上的支持。它包 ......

每个初学者都应该搞懂的问题(Java)

很久没有做java的项目了,今天逛了逛CSDN的论坛,很幸运的遇到这篇文章,写的不错。有几个要点,以前理解的都不透。所以收藏了,谢谢论坛ID:为 yrjxm007 的网友。 对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重 ......

java杂想

采用欲扬先抑的手法谈谈java:
      java没有指针只有引用是最大的败笔.正因为没有指针,很多操作要迂回婉转;垃圾收集机制也觉得是鸡肋,写个析构函数真的那么复杂吗, 有必要牺牲灵活性吗;函数调用的代价之高让人抓狂
但我还是选择了她:
      java的纯面向对象特 ......

Java学习 从入门到精通


Java Learning Path (一)、工具篇
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外 ......

JAVA分为J2EE,J2SE.J2ME

JAVA分为J2EE,J2SE.J2ME,下面分别介绍:
一.J2EE:Java 2 Platform Enterprise Edition 企业版,用于企业应用,支持分布式部署。 
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,
它对开发基于Web的多层应用提供了功能上的支持。它包含13种核心技术规范:
(1)Java Database Connectivity ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号