【开发者笔记】插入排序过程呈现之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),和冒泡排序半斤八两。

黑夜给了我黑色的眼睛,我却用它寻找光明
目录
相关文章
|
13天前
|
前端开发 JavaScript Java
Java构建工具-maven的复习笔记【适用于复习】
这篇文档由「潜意识Java」创作,主要介绍Maven的相关知识。内容涵盖Maven的基本概念、作用、项目导入步骤、依赖管理(包括依赖配置、代码示例、总结)、依赖传递、依赖范围以及依赖的生命周期等七个方面。作者擅长前端开发,秉持“得之坦然,失之淡然”的座右铭。期待您的点赞、关注和收藏,这将是作者持续创作的动力! [个人主页](https://blog.csdn.net/weixin_73355603?spm=1000.2115.3001.5343)
27 3
|
13天前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
41 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
2月前
|
Java 开发者
Java 开发者注意!限时招募产品体验官,100% 获得好礼
🚀【开发者福音】SoFlu-JavaAI 开发助手来袭!💻 摆脱熬夜赶需求的压力,SoFlu-JavaAI 助你轻松应对:理清需求、设计架构、编写逻辑与代码、一键构建工程。立即体验高效开发![了解更多](https://mp.weixin.qq.com/s/h9lwDGbwhYodoNjOxsaxIQ) # 产品体验官限时招募中!
Java 开发者注意!限时招募产品体验官,100% 获得好礼
|
2月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
2月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
2月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
75 0
|
消息中间件 Dubbo Java
Java 开发者 必备的工具 和 框架
Java 开发者 必备的工具 和 框架
243 2
|
27天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
85 17
|
2月前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者