使用Java FX可视化经典排序算法

本文通过JavaFX展示了冒泡排序、快速排序等常见排序算法的过程,并提供了动态展示数据变化的界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:都说计算机离不开对数据的排序和查找,计算机在处理任务的时候其实有80%的时间都在做查找的工作。这句话是我老师说的,具体情况是怎样我也不知道是为什么,反正吧,对数据排序其实就是为了更快的查找对吧。以前学排序算法的时候只是知道这种算法是这样排的,每一趟排序都只能手动写出来,一点也不直观,上个星期闲的无聊看到有个东西叫Java FX,是用来做Java程序UI界面的,听说比swing要好用,所以想到了用Java FX来做一个常见排序算法的过程。
先上几张图吧

  • 冒泡排序
    bubble sort
  • 插入排序
    insertion sort
  • 快速排序
    quick sort
    (这些gif图是我直接用github的连接的,因为大小超过2M了没法上传,如果看不了请转到排序github项目地址

Java FX是jdk7出来的新特性,它和swing一个最大的不同之处就是Java FX可以使用fxml来配合Scene Builder来构建界面,这个非常类似于Android使用xml布局文件来设计界面。当然,如果你不想使用fxml,你可以直接使用代码来动态生成界面,这个和Android也是相类似的。Java FX的相关知识可以参考Java FX中文教程,当然,如果英语好的可以直接看官方文档,官方有Java FX的全部的API和丰富的示例,这里就不多介绍。
主界面的这样的
这里写图片描述

各个按钮的功能就不用解释了。
主类是SortApp.java,继承了javafx.application.Application,这里使用的是动态构建界面这种方式。至于数据显示,这里动画所使用的时间并不能代表该排序算法的真正使用时间,因为这里是使用这样一个集合,它是记录排序过程中每次数据变化之后的数据位置,然后把整个变化过程播放出来。举个例子说,比如冒泡排序每当有前后两个数字交换了就会记录一次,这一次记录就是动画的一帧。
project中提供了一个Sort接口和一个SortAdapter类,实现Sort接口或者继承SortAdapter都可以,当有数据的位置发生变化时,需要调用com.spareyaya.dynamicsort.util.DataUtils#add(int[]) 方法来把这次数据变化记录下来。如冒泡排序:

@Override
public void sortDesc(int[] unsortedArray) {
    if (Utils.isEmpty(unsortedArray)) {
        return;
    }
    //记录数据变化
    DataUtils.add(unsortedArray);
    int tmp;
    for (int i = 0; i < unsortedArray.length; i++) {
        for (int j = unsortedArray.length - 1; j > i; j--){
            if (unsortedArray[j] > unsortedArray[j-1]){
                tmp = unsortedArray[j];
                unsortedArray[j] = unsortedArray[j-1];
                unsortedArray[j-1] = tmp;
                //记录数据变化
                DataUtils.add(unsortedArray);
            }
        }
    }
}

目前已经实现的有冒泡排序、快速排序、插入排序、选择排序,其它的有兴趣可以自己去实现。
该项目的地址已经上传到github,我是github项目地址

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值