java中最小生成树的实现
2016-03-25 12:43
441 查看
最小生成树的实现:
import java.util.ArrayList; import java.util.List; public class ShortestTree { int[][] dataMap={ {-1,-1,10,-1,30,100}, {-1,-1,5,-1,-1,-1}, {-1,-1,-1,50,-1,-1}, {-1,-1,-1,-1,-1,10}, {-1,-1,-1,20,-1,60}, {-1,-1,-1,-1,-1,-1}, }; //找寻最小生成树 void findShortestTree(int start,int end,int n){ int[] closedge = new int ;//记录与当前树与可达的未被访问之间的权值 boolean[] arrivaled = new boolean ;//记录节点是否被访问 List list = new ArrayList();//记录最小生成树中依次添加的节点 int tempMinNode; arrivaled[start] = true;//标记起始节点已被访问 list.add(start);//把起始节点加入最小生成树列表中 for (int i = 0; i < n; i++) { if(!arrivaled[i]) closedge[i] = dataMap[start][i]; } for (int i = 0; i < n; i++) { tempMinNode = findMinNode(closedge, arrivaled); System.out.println(tempMinNode); if(-2 == tempMinNode || -1==closedge[tempMinNode]){ break; }else{ arrivaled[tempMinNode] = true; list.add(tempMinNode); for (int j = 0; j 0){ if(closedge[j]==-1 || closedge[j]>dataMap[tempMinNode][j]){ closedge[j] = dataMap[tempMinNode][j]; } } } } } System.out.println(list); } //找寻与当前生成树连接中具有最小权值的连接节点 int findMinNode(int[] closedge,boolean[] arrived){ int size = closedge.length,min=-2; for (int i = 0; i < size; i++) { if(!arrived[i]){ if(min==-2 && closedge[i]>0)//覆盖初始节点 min=i; if(-2!=min && closedge[min]>0){ if(closedge[i]>0 && closedge[i]
相关文章推荐
- 关于Eclipse自动补全的问题
- Java中的基本数据类型 | Java基础
- java 位运算
- java 的float型数据保存到数据库中变成了整数
- Java异常处理实例分析--六种异常处理的陋习
- Java 线程异常处理器
- eclipse 快捷键
- Spring学习笔记(一)
- [Java并发包学习七]解密ThreadLocal
- hdu 神、上帝以及老天爷 java
- maven中下载jar包源码和javadoc
- Java 线程通信
- char可以存储汉字吗?| Java基础
- Java拾遗——存储位置
- Java day10 IO 列出文件下的所有层级文件名 待修改
- Java day10 递归
- Spring shiro使用
- 成为JAVA(高级)工程师,该学什么?
- Java DES 3DES AES Base64加密
- (java)统计小于N的数中素数的个数