先给代码,再给过程视频:
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),和冒泡排序半斤八两。