[Java] javaGUI实现最小生成树

前一阵子看到新人被踢,身为小白的我瑟瑟发抖
之前发了三个帖子,违规了两个,但是为了在这里活下去。
我还是舔着脸来了。
这篇推文主要介绍的是用Prim和Kruskal算法实现最小生成树,同时界面显示实现过程。采用的java技术点主要包括:
        1.IO流读取txt文件,获取所用数据;读取图片,为主页添加title。
        2.javaGUI中Jframe窗口和Jpanel面板的基本参数设计以及Graphics画笔画出点与距离等数据。        3.List<Object>集合,用来存储边的对象

      上图是此项目的包结构:1.com.kruskal:        Edge.java:边的类,含有属性包括边的开始点begin,边的结束点end,边的权值weight.
        Kruskal.java:主要实现Kruskal算法的类
        KruskalMap:用来实现Kruskal算法的界面
2.com.prim:        Prim.java:实现Prim算法的类
        PrimMap.java:实现Prim算法的界面
3.com.paint:        PaintLine:用来画边的类
        PaintPoint:用来画点的类
4.com.res:        ReadRes.java:主要实现读取txt文件,返回二维数组
5.com.test:        MainApp.java:主类,同时含有主界面,用来选择Prim或Kruskal算法。
6.JRE System Library:        工程创建时便有,主要存放J2SE的标准jar包。7.JUtil4:        coding过程中导入的测试包
8.img:        含有工程中所需要的图片
9.txt:        包含TXT文件,是工程中的数据源

接下来提取主要代码仅供大家学习参考:
主类的实现及界面展示:
  



    Prim算法主要实现思想:找到一个点出发,寻找最小连接边加入这个点,组成一个集合,在找剩下的最小连接边加入集合...直到找不到最小连接边。     在这个类中需要提及的是,我们根据点击次数进行遍历,每次返回需要画的点和边进行绘制。
    Kruskal算法主要实现思想:根据边的权值排序,从最小边出发依次遍历,不成环便加入最小树...直到找不到最小连接边。     在这个类中需要提及的是:不同于Prim算法,这个算法使用了集合,对象,简化了编程。    public int find(int[] parent, int index) {        while (parent[index] > 0) {            index = parent[index];        }        return index;    }    这个方法是此算法的精髓所在,主要用来判断是否成环,思想就是寻找一条边的两个点的终点是否相等,相等便成了环。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值