【子非鱼】插入排序过程呈现之java内置GUI表示
先给代码,再给过程视频:
package com.dyi.wyb.sort; import java.awt.Color;
import java.awt.Graphics;
import java.util.Random; import javax.swing.*; public class InsertionSort extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* main method
*
* @param args
* []
* @author stagebo
*/
static int[] arr = getArray(1000);
static InsertionSort show;
public static void main(String[] args) {
show=new InsertionSort("插入排序");
insertionSort(arr);
} /**
* introduction:algorithms of insertionSort
*
* @param arr
* []
* @return void
*
*/
public static void insertionSort(int[] arr) {
for (int j = 1; j < arr.length; j++) {
int key = arr[j];
int i;
for (i = j - 1; i >= 0 && arr[i] > key; i--) {
arr[i + 1] = arr[i];
try{Thread.sleep(5);}catch(Exception e){}
show.repaint();
}
arr[i + 1] = key;
}
} /**
* function: print array
*
* @param arr
* @param str
*/
public static void printArray(int[] arr, String str) {
System.out.print(str + ":");
for (int i : arr) {
System.out.print(i + "--");
}
System.out.println();
} /**
* constructor,initial the panel
*/
public InsertionSort(String title) {
setTitle(title);
setLocation(20, 20);
setSize(1000, 600);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public void paint(Graphics g) {
for (int i = 0; i < arr.length; i++) {
g.setColor(Color.BLACK);
g.drawLine(i, 600, i, 600-arr[i]);
g.setColor(Color.WHITE);
g.drawLine(i, 0,i, 600-arr[i]);
}
} /**
* return a random value array
*
* @param length
* @return array[length]
*/
public static int[] getArray(int length) {
int[] re = new int[length];
for (int i = 0; i < re.length; i++)
re[i] = i / 2;
for (int i = 0; i < re.length; i++) {
int index1 = new Random().nextInt(length);
for (int j = 0; j < 3; j++) {
int temp = re[i];
re[i] = re[index1];
re[index1] = temp;
}
}
return re;
}
}
插入排序以及显示面板代码
插图,插入排序过程显示视频连接
插入排序的时间复杂度T(n)=O(n2),和冒泡排序半斤八两。
【子非鱼】插入排序过程呈现之java内置GUI表示的更多相关文章
- 【开发者笔记】插入排序过程呈现之java内置GUI表示
先给代码,再给过程视频: package com.dyi.wyb.sort; import java.awt.Color; import java.awt.Graphics; import java. ...
- 【子非鱼】冒泡排序过程呈现之java内置GUI表示
自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...
- 【开发者笔记】冒泡排序过程呈现之java内置GUI表示
自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...
- 【子非鱼】归并排序过程呈现之java内置GUI表示
在网上看到一个视频将各种排序用视频表示出来,配上音乐,挺好玩的样子,就算是不会编程的人看到也会觉得很舒服,碰巧我也正在写归并算法,于是就用java的GUI实现一个. 归并排序的时间复杂度是T(n)=O ...
- 【开发者笔记】归并排序过程呈现之java内置GUI表示
在网上看到一个视频将各种排序用视频表示出来,配上音乐,挺好玩的样子,就算是不会编程的人看到也会觉得很舒服,碰巧我也正在写归并算法,于是就用java的GUI实现一个. 归并排序的时间复杂度是T(n)=O ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- 深入理解Java内置锁和显式锁
synchronized and Reentrantlock 多线程编程中,当代码需要同步时我们会用到锁.Java为我们提供了内置锁(synchronized)和显式锁(ReentrantLock)两 ...
- 使用Java内置的Http Server构建Web应用
一.概述 使用Java技术构建Web应用时, 我们通常离不开tomcat和jetty之类的servlet容器,这些Web服务器功能强大,性能强劲,深受欢迎,是运行大型Web应用的必备神器. 虽然Jav ...
- java内置线程池ThreadPoolExecutor源码学习记录
背景 公司业务性能优化,使用java自带的Executors.newFixedThreadPool()方法生成线程池.但是其内部定义的LinkedBlockingQueue容量是Integer.MAX ...
随机推荐
- Socket.io+Nodejs通讯实例
具体源码:Socket 目录结构 D:. │ package.json │ server.js │ └─public index.html socket.io.js 需要的条件 socket.io.j ...
- Android jni 编程4(对基本类型二维整型数组的操作)
Android jni 编程 对于整型二维数组操作: 类型一:传入二维整型数组,返回一个整型值 类型二:传入二维整型数组,返回一个二维整型数组 声明方法: private native int Sum ...
- bootstrap - btn
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 《Java从0开始的成长之路》
大纲 这篇博文是我整理寒假一个月来的总结 作用一:主要是方便我以后复习,并尝试对Java虚拟机深度挖掘,希望各位前辈给予指点,我会潜心钻研,只希望水平更进一步. 作用二:闭关锁国终将遭遗弃,希望汇聚网 ...
- click延时300ms的故事
这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题 ...
- android学习2——RelativeLayout
相对布局管理器,一个View的位置是相对于另外一个View定义的. <?xml version="1.0" encoding="utf-8"?> & ...
- eclipse下进行spark开发(已实践)
开发准备: jdk1.8.45 spark-2.0.0-bin-hadoop2.7(windows下和linux个留一份) Linux系统(centos或其它) spark安装环境 hadoop-2. ...
- 【CNMP系列】CentOS7.0下安装PHP5.6.30服务
上一节我们讲过了如何在CentOS7.0下安装MySql服务,如果没有看到欢迎页面的朋友,可以加我的个人微信详聊:litao514148204 附上一节地址:http://www.cnblogs.co ...
- 从C#到TypeScript - Reflect
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...
- JQUERY写大图轮播;附jquery的hover()方法、animate()方法、find()方法
思想:黑框设置超出部分隐藏. 红框往左移动,通过判断红框左边框距离黑框左边框的像素值,来实现红框的移动. 绿框在最上层,放每张图片的说明和序号. 一:html部分(大框.图片部分.箭头部分.图片介绍部 ...