java fx如何实现排刷_使用Java FX可视化经典排序算法

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

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

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

先上几张图吧

冒泡排序

BubbleSort.gif

插入排序

InsertionSort.gif

快速排序

QuickSort.gif

(这些gif图是我直接用github的连接的,因为大小超过2M了没法上传,如果看不了请转到排序github项目地址)

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

主界面的这样的

2dc42928adf2433558c06bdd1c9ad6b1.png

各个按钮的功能就不用解释了。

主类是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项目地址。

使用Java FX可视化经典排序算法相关教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值