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

简介: 先给代码,再给过程视频: 1 package com.dyi.wyb.sort; 2 3 import java.awt.Color; 4 import java.awt.

先给代码,再给过程视频:

  1 package com.dyi.wyb.sort;
  2 
  3 import java.awt.Color;
  4 import java.awt.Graphics;
  5 import java.util.Random;
  6 
  7 import javax.swing.*;
  8 
  9 public class InsertionSort extends JFrame {
 10     /**
 11      * 
 12      */
 13     private static final long serialVersionUID = 1L;
 14     /**
 15      * main method
 16      * 
 17      * @param args
 18      *            []
 19      * @author stagebo
 20      */
 21     static int[] arr = getArray(1000);
 22     static InsertionSort show;
 23     public static void main(String[] args) {
 24         show=new InsertionSort("插入排序");
 25         insertionSort(arr);
 26     }
 27 
 28     /**
 29      * introduction:algorithms of insertionSort
 30      * 
 31      * @param arr
 32      *            []
 33      * @return void
 34      * 
 35      */
 36     public static void insertionSort(int[] arr) {
 37         for (int j = 1; j < arr.length; j++) {
 38             int key = arr[j];
 39             int i;
 40             for (i = j - 1; i >= 0 && arr[i] > key; i--) {
 41                 arr[i + 1] = arr[i];
 42                 try{Thread.sleep(5);}catch(Exception e){}
 43                 show.repaint();
 44             }
 45             arr[i + 1] = key;
 46         }
 47     }
 48 
 49     /**
 50      * function: print array
 51      * 
 52      * @param arr
 53      * @param str
 54      */
 55     public static void printArray(int[] arr, String str) {
 56         System.out.print(str + ":");
 57         for (int i : arr) {
 58             System.out.print(i + "--");
 59         }
 60         System.out.println();
 61     }
 62 
 63     /**
 64      * constructor,initial the panel
 65      */
 66     public InsertionSort(String title) {
 67         setTitle(title);
 68         setLocation(20, 20);
 69         setSize(1000, 600);
 70         setVisible(true);
 71         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 72     }
 73 
 74     public void paint(Graphics g) {
 75         for (int i = 0; i < arr.length; i++) {
 76             g.setColor(Color.BLACK);
 77             g.drawLine(i, 600, i, 600-arr[i]);
 78             g.setColor(Color.WHITE);
 79             g.drawLine(i, 0,i, 600-arr[i]);
 80         }
 81     }
 82 
 83     /**
 84      * return a random value array
 85      * 
 86      * @param length
 87      * @return array[length]
 88      */
 89     public static int[] getArray(int length) {
 90         int[] re = new int[length];
 91         for (int i = 0; i < re.length; i++)
 92             re[i] = i / 2;
 93         for (int i = 0; i < re.length; i++) {
 94             int index1 = new Random().nextInt(length);
 95             for (int j = 0; j < 3; j++) {
 96                 int temp = re[i];
 97                 re[i] = re[index1];
 98                 re[index1] = temp;
 99             }
100         }
101         return re;
102     }
103 }
插入排序以及显示面板代码

插图,插入排序过程显示视频连接

 

插入排序的时间复杂度T(n)=O(n2),和冒泡排序半斤八两。

黑夜给了我黑色的眼睛,我却用它寻找光明
目录
相关文章
|
9天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
9天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
16天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
25 2
|
9天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
26 0
|
1月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
1月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
21天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
10 0
Java初级笔记-第五章
第五章 面向对象的特点 5.1 继承 面向对象的重要特点之一就是继承。类的继承使得能够在已有的类的基础上构造新的类,新类除了具有被继承类的属性和方法外,还可以根据需要添加新的属性和方法。
1051 0
|
Java Windows 开发框架
Java初级笔记-第一章
第一章 Java概览 1.1 基本简介 Java是一种理想的面向对象的网络编程语言。 1991年,出现了Oak语言,旨在解决编程语言的选择和跨平台的问题。
1375 0
Java初级笔记-第二章
第二章 Java的基本数据类型、运算符及表达式 2.1 标识符 标识符是程序员对程序中的各个元素加以命名时使用的命名记号。
1210 0