自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者。好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣。

排序以及显示代码:

 package com.wyb.dyi.test;

 import java.awt.Toolkit;
import java.util.Random; import com.wyb.dyi.test.*; public class showBubbleSort {
public static int W = (int) Toolkit.getDefaultToolkit().getScreenSize()
.getWidth();/* 当前屏幕宽度 */
public static int H = (int) Toolkit.getDefaultToolkit().getScreenSize()
.getHeight();/* 当前屏幕高度 */ static int[] array = getArray(W);
/*显示用的面板*/
static ShowArrayInLine show = new ShowArrayInLine(array); /* main */
public static void main(String[] args) {
try {
Thread.sleep(2000);
} catch (Exception e) {
}
System.out.println("start!");
bubble(array); } /* 冒泡排序 */
static void bubble(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
/*可以在这里刷新显示,但是刷新速度过慢,能观察到排序细节*/
show.updateShowArray(array);
}
/*在这里刷新显示比较快*/
//show.updateShowArray(array);
}
} /* 构造一个长度为length的高度为length/2的数组 */
public static int[] getArray(int length) {
/* 生成空数组 */
int[] re = new int[length];
/* 给数组附上高为length/2的升序数值 */
for (int i = 0; i < re.length; i++)
re[i] = i / 2;
/* 讲有序数组打乱 */
for (int i = 0; i < 20 * re.length; i++) {
int index1 = new Random().nextInt(length);
int index2 = new Random().nextInt(length);
int temp = re[index1];
re[index1] = re[index2];
re[index2] = temp;
} return re;
}
}

排序块

 package com.wyb.dyi.test;

 import java.awt.Color;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.util.Random; import javax.swing.JFrame;
import javax.swing.JPanel; /* 显示主框架JFrame类 */
class ShowArrayInLine extends JFrame {
private static final long serialVersionUID = 1L;
ShowJPanel show;
int[] oldArray;
/* 构造函数,初始化显示框架 */
public ShowArrayInLine(int[] a) {
oldArray=a;
show = new ShowJPanel(a,a);
show.setBounds(0, 0, ShowTool.W, ShowTool.H);
this.setSize(ShowTool.W, ShowTool.H);
this.setTitle("归并排序");
this.setLocation(0, 0);
this.add(show);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} /**
* 更新画布
*
* @param a
*/
public void updateShowArray(int[] a) { this.remove(show);
show = new ShowJPanel(a,oldArray);
this.add(show);
this.setVisible(true);
oldArray=a;
}
} /* 画图面板 */
class ShowJPanel extends JPanel {
private static final long serialVersionUID = 1L;
int[] array;/* 用于接收构造方法传过来的数组,用于绘图 */
public int[] oldArray; public ShowJPanel(int[] a,int[] b) {
array = a;
oldArray=b;
}
/* 绘图函数 */
public void paintComponent(final Graphics g) {
Random r=new Random(); /*画笔置白色*/
g.setColor(Color.WHITE);
/* 擦除上一次绘制的团*/
g.fillRect(0,0,Tool.W,Tool.H); /* 开始绘制当前数组图像,以(0,ShowTool.H)为原点,向右为x轴表数组下标,向上为y轴表当前下标所对应数组存置大小*/
for (int i = 0; i < array.length; i++) {
/* 画笔置黑色*/
if(oldArray[i]==array[i])
g.setColor(Color.BLACK);
else
g.setColor(Color.RED);
g.drawLine(i, ShowTool.H - 80, i, ShowTool.H - array[i] - 80);
} }
} /* 工具类,获取当前屏幕大小,用户初始化显示组件和new乱序数组 */
class ShowTool {
public static int W = (int) Toolkit.getDefaultToolkit().getScreenSize()
.getWidth();/* 当前屏幕宽度 */
public static int H = (int) Toolkit.getDefaultToolkit().getScreenSize()
.getHeight();/* 当前屏幕高度 */
}

显示面板块

下面给出效果图以及连接: 冒泡排序过程呈现之java内置GUI表示视频

【子非鱼】冒泡排序过程呈现之java内置GUI表示的更多相关文章

  1. 【开发者笔记】冒泡排序过程呈现之java内置GUI表示

    自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...

  2. 【子非鱼】插入排序过程呈现之java内置GUI表示

    先给代码,再给过程视频: package com.dyi.wyb.sort; import java.awt.Color; import java.awt.Graphics; import java. ...

  3. 【子非鱼】归并排序过程呈现之java内置GUI表示

    在网上看到一个视频将各种排序用视频表示出来,配上音乐,挺好玩的样子,就算是不会编程的人看到也会觉得很舒服,碰巧我也正在写归并算法,于是就用java的GUI实现一个. 归并排序的时间复杂度是T(n)=O ...

  4. 【开发者笔记】插入排序过程呈现之java内置GUI表示

    先给代码,再给过程视频: package com.dyi.wyb.sort; import java.awt.Color; import java.awt.Graphics; import java. ...

  5. 【开发者笔记】归并排序过程呈现之java内置GUI表示

    在网上看到一个视频将各种排序用视频表示出来,配上音乐,挺好玩的样子,就算是不会编程的人看到也会觉得很舒服,碰巧我也正在写归并算法,于是就用java的GUI实现一个. 归并排序的时间复杂度是T(n)=O ...

  6. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  7. 深入理解Java内置锁和显式锁

    synchronized and Reentrantlock 多线程编程中,当代码需要同步时我们会用到锁.Java为我们提供了内置锁(synchronized)和显式锁(ReentrantLock)两 ...

  8. 使用Java内置的Http Server构建Web应用

    一.概述 使用Java技术构建Web应用时, 我们通常离不开tomcat和jetty之类的servlet容器,这些Web服务器功能强大,性能强劲,深受欢迎,是运行大型Web应用的必备神器. 虽然Jav ...

  9. java内置线程池ThreadPoolExecutor源码学习记录

    背景 公司业务性能优化,使用java自带的Executors.newFixedThreadPool()方法生成线程池.但是其内部定义的LinkedBlockingQueue容量是Integer.MAX ...

随机推荐

  1. CSS实现的几款不错的菜单栏

    前言 自从做了智慧城市这个项目之后,我一个做后端的开发者,瞬间转为前端开发,不过我还是很喜欢前端的.前端那些事,其实蛮有意思的,HTML实现的是静态的,使用ajax之后就可以和数据库交互了,加上js和 ...

  2. 通过CXF方式实现webservice服务

    一.CXF的介绍 Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 S ...

  3. 蓝桥网试题 java 入门训练 A+B问题

    ---------------------------------------------------------------------------------------------------- ...

  4. 使用JAVA开发微信公众平台(一)——环境搭建与开发接入

    一. 初始微信公众平台 微信公众平台,即我们平时所说的"公众号",曾用名"官方平台"."媒体平台",但最终命名为"公众平台&quo ...

  5. 每日一练之自适应中值滤波器(基于OpenCV实现)

    本文主要介绍了自适应的中值滤波器,并基于OpenCV实现了该滤波器,并且将自适应的中值滤波器和常规的中值滤波器对不同概率的椒盐噪声的过滤效果进行了对比.最后,对中值滤波器的优缺点了进行了总结. 空间滤 ...

  6. Git中.gitignore文件的使用

      在我们使用git的时候,有时候就不想传一些与代码无关的文件到远程仓库中,比如说编译后的文件,.gitignore就可以帮助我们处理这些文件. 生成.gitignore文件 在git bash中使用 ...

  7. java 文件操作 读取txt文本(兄弟常开心)

    测试一下读取文本的另一种方法:该方法只使用一个类读取了文件 注意:buffer和read方法中读取指定长度的一致 package com.swust; import java.io.*; /* * 数 ...

  8. 怎么监控apache运行状态和页面统计

    通过使用mod_status的模块来监控Apache web server的负载. 1. mod_status是什么? mod_status是一个apache模块,它帮助监控web server负载和 ...

  9. Unity渲染优化中文翻译(三)——GPU的优化策略

    如果游戏的渲染瓶颈来自于GPU 首要任务就是找出造成GPU瓶颈的因素所在,通常GPU的性能受到像素分辨率的影响,特别是在移动客户端的游戏,但是内存带宽和顶点计算的影响也需要注意.这些因素的影响都需要实 ...

  10. 查看hive中某个表中的数据、表结构及所在路径

    查看hive中action_data_myisam表中的数据.表结构及所在路径 1.客户端进入hive环境:hive 2.查看表数据,鉴于数据量大,这里只显示前五条:select * from act ...