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

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

  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),和冒泡排序半斤八两。

黑夜给了我黑色的眼睛,我却用它寻找光明
原文地址:https://www.cnblogs.com/wyongbo/p/insertionSort.html