`

java线程应用——排序过程动态显示

阅读更多

设计思路:(用多线程并且每次交换数据都暂停1ms实现动态效果,顺便深入理解一下各类排序的特点)

       从各类选择中选择了7种排序,用动态效果展示排序过程。生成800个随机数(用图形描述的时候每个数占一个像素点)用ArrayList存储每个点的长度(此处用矩形来画线,方便以后宽度的更改),每种排序都用一个线程来执行,每次赋值(冒泡和2路太慢,所以做了适当修改)都暂停1ms,这样才能看清过程再写一个线程刷新JPanel的窗体。

      每个排序再写一个计算排序时间的类(线程)。测试了1000个,10000个,100000个的时间。

程序效果展示如下:



 

 

 



 



 

由于生成的随机数为了方便画出来,直接选的0-69的随机数,所以基数排序过程非常迅速,只要循环两次就可以排好。归并排序很明显的是一个一个合并起来。冒泡很明显的在一个一个的挑出来。堆排序明显在找到最大的往后面放。。。。。。(不代表排序时间)

 在计算时间的时候是生成的100000以内的随机数

 

贴出部分实现代码:

重绘:

public void paint(Graphics g) {
			super.paint(g);

			for (int i = 0; i < mplist.size(); i++) {
				Rect rc = mplist.get(i);
				rc.draw(g);
			}
............
}

 

加到ArrayList:(冒泡为例)

	public void Maopao() {
		for (int i = 0; i < a.length; i++) {
			for (int j = i + 1; j < a.length; j++) {

				if (a[i] > a[j]) {
					try {
						Thread.sleep(2);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					UI.mplist.remove(rc[i]);
					UI.mplist.remove(rc[j]);

					temp = a[i];
					a[i] = a[j];
					a[j] = temp;

					rc[i] = new Rect(x + i, y - a[i], 2, a[i], new Color(255,
							3 * a[i], 3 * a[i]));
					rc[j] = new Rect(x + j, y - a[j], 2, a[j], new Color(255,
							3 * a[j], 3 * a[j]));
					UI.mplist.add(rc[i]);
					UI.mplist.add(rc[j]);
				}
			}
		}

 

在构造方法中初始化数据:

public MaoPao(int a[]) {
		for (int i = 0; i < a.length; i++) {
			this.a[i] = a[i];
			rc[i] = new Rect(x + i, y - this.a[i], 2, this.a[i], new Color(255,
					3 * this.a[i], 3 * this.a[i]));
			UI.mplist.add(rc[i]);
		}
	}

 

 

刷新窗体的线程:

package v1;

import javax.swing.JPanel;
/**
 * 更新屏幕的线程
 * @author 斌
 *
 */
public class UpdataCenter implements Runnable{

	JPanel center;
	public UpdataCenter(JPanel center){
		this.center= center;
		if(UI.over==0){
				UI.btnStart.setText("重来");
				UI.btnStart.setEnabled(true);
			}
	}
	@Override
	public void run() {
		while(true){
			center.repaint();
			try {
				Thread.sleep(30);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}

 

 

源码参考:

 

  • 大小: 274.9 KB
  • 大小: 261.1 KB
  • 大小: 157.6 KB
  • 大小: 117.4 KB
分享到:
评论
2 楼 肆无忌惮_ 2014-07-04  
人生难得糊涂 写道
好牛逼的样子

在你面前怎么敢装逼...从头到尾都是在画矩形
1 楼 人生难得糊涂 2014-07-03  
好牛逼的样子

相关推荐

    JAVA上百实例源码以及开源项目源代码

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    JAVA上百实例源码以及开源项目

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    Java开发技术大全 电子版

    5.1.8应用程序示例1——数组排序209 5.1.9应用程序示例2——杨辉三角212 5.2字符串213 5.2.1String对象的声明213 5.2.2String对象的创建214 5.2.3String对象的使用214 5.2.4String类型的数组216 5.2.5...

    Java数据库编程宝典3

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java数据库编程宝典2

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java数据库编程宝典4

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java数据库编程宝典1

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    javaSE代码实例

    第16章 多线程——Java中的并发协作 343 16.1 线程的基本知识 343 16.1.1 多线程编程的意义 343 16.1.2 定义自己的线程 344 16.1.3 创建线程对象 345 16.1.4 启动线程 347 16.1.5 同时使用多个线程 ...

    asp.net知识库

    动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--时间之当前时间动态显示 |--时间之自动任务ScheduledExecutorService |--时间之记时器 |--时间日期格式化 |--服务之判断是否处于运行状态 |--服务之定义录音机 |--服务之应用内绑定服务调用方法 |--服务之电话...

    Eclipse_Swt_Jface_核心应用_部分19

    第1章 Java语言的GUI历史 2 1.1 最初的AWT 2 1.2 Swing工具包 3 1.3 Eclipse的诞生 3 1.4 Eclipse贡献SWT工具包 5 1.4.1 SWT的结构 6 1.4.2 SWT所支持的操作系统 6 1.5 Sun AWT/Swing与Eclipse SWT 7 ...

    Eclipse权威开发指南2.pdf

    2.3.6 快速差别—— 实时变化通知..... 48 2.3.7 文件编码..... 48 2.3.8 打印..... 49 2.4 Eclipse定制...... 49 2.4.1 透视图..... 49 2.4.2 渐进显示..... 51 2.4.3 在Eclipse中运行多窗口和多工作空间..... 51...

    C#微软培训资料

    1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 ...

    Eclipse权威开发指南3.pdf

    2.3.6 快速差别—— 实时变化通知..... 48 2.3.7 文件编码..... 48 2.3.8 打印..... 49 2.4 Eclipse定制...... 49 2.4.1 透视图..... 49 2.4.2 渐进显示..... 51 2.4.3 在Eclipse中运行多窗口和多...

    Eclipse权威开发指南1.pdf

    2.3.6 快速差别—— 实时变化通知..... 48 2.3.7 文件编码..... 48 2.3.8 打印..... 49 2.4 Eclipse定制...... 49 2.4.1 透视图..... 49 2.4.2 渐进显示..... 51 2.4.3 在Eclipse中运行多窗口和多...

Global site tag (gtag.js) - Google Analytics