JavaSwing排序动画

本文介绍了使用JavaSwing创建的四种排序动画:插入排序、冒泡排序、选择排序和快速排序。通过条形图直观展示排序过程,作者强调了Histogram类在绘制条形图中的关键作用,并详细说明了如何在排序算法中实时更新条形图,以及如何通过多线程控制动画效果。此外,还提供了代码下载和动画视频供读者参考。
摘要由CSDN通过智能技术生成

排序动画做了有一段时间了,我觉得有必要记录一下

闲话休提,言归正传

上图  


具体就是四个排序动画,分别为插入排序,冒泡排序,选择排序,快速排序

之所以做这个排序动画是因为,以前学习排序,在youtube上看过排序动画视频,很受震撼

后来自己学Java过程渐渐发现这个可以做出来,果然功夫不负有心人总算做出来了


首先这个程序最重要的是以条形图来代表数的大小,数越大,条形图越高

在这里我定义一个类Histogram,主要负责根据数组里的数字,画出条形图来

package Sorting_Animation;

import javax.swing.JPanel;
import java.awt.*;

public class Histogram extends JPanel {
	private int[] count;
	private int index1;   //The index of red bar
	private int index2;   //The index of red bar
	private static final int length = 100; 
	private int maxCount;
	private int begin;
	private int end;
	
	/**Set the count and two red bar and display histogram*/
	public void showHistogram(int[] count, int index1, int index2){
		this.index1 = index1;
		this.index2 = index2;
		this.count = count;
		repaint();
	}
	
	/**Set the count and one red bar and display histogram */
	public void showHistogram(int[] count, int index1){
		this.index1 = index1;
		this.count = count;
		this.begin = 0;
		this.end = count.length;;
		repaint();
	}
	
	/**Set the count and display histogram */
	public void showHistogram(int count[]){
		this.count = count;
		this.begin = 0;
		this.end = count.length;
		repaint();
	}
	
	/**Show the merge histogram */
	public void showMergeHistogram(int count[],int index1,int begin,int end){
		this.begin = begin;
		this.end = end;
		this.count = count;
		repaint();
		
	}
	
	/**Define the histogram*/
	public Histogram(){
		setCount();
		setMaxCount(count);
		showHistogram(count);
	}
	
	public int[] getCount(){
		return count;
	}
	
	public static int getLength(){
		return length;
	}
	
	/**Set the random elements*/
	public void setCount(){
		count = new int[length];
		
		boolean flag=false;
    	int temp;
    	int index1 = 0;
		while(index1 < length){
    		temp = (int)(Math.random()*length)+1;
    		//Check the same element
    		for(int j=0;j<index1;j++){
    			if(temp == count[j]){
    				flag=true;
    				break;
    			}
    			else{
    				flag = false;
    			}
    		}
    		
    		if(!flag )
    			count[index1++] = temp;
		}
    }
	
	/** Set the worst elements */
	public void setWorstCount(){
		count = new int [length];
		while(index1 < length){
			count[index1++
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值