Java拾遗(四)

数组(一个冒泡排序的实现)

package Bubblesort;

import java.util.Arrays;
import java.util.Random;

//随机数组的冒泡排序
public class Bubblesort {
	int[] arr= new int[10];
	comics a = new comics();
	public void bubblesort(){
		int i;
		Random rand = new Random();
		for(i=0; i<10; i++){			
			arr[i] =  rand.nextInt(50);		
		}
		System.out.println(Arrays.toString(arr));
		a.showUI();
		a.show(arr);
	}
		
	public static void main(String[] args){
		Bubblesort bsort = new Bubblesort();
		bsort.bubblesort();
	}
}
package Bubblesort;

import java.awt.FlowLayout;

import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;

//随机数组冒泡排序的动画实现
public class comics{
	JFrame jf = new JFrame();
	JButton Button = new JButton("SHOW");
	
	public void showUI(){
		jf.setSize(800, 600);
		jf.setLocationRelativeTo(null);
		jf.setTitle("BubbleSort");
		FlowLayout layout = new FlowLayout();
		jf.setLayout(layout);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.add(Button);
		jf.setVisible(true);
	}
	
	public void show(int[] a){
		ComicsListener cl = new ComicsListener();
		Button.addActionListener(cl);
		Graphics g = jf.getGraphics();
		cl.setG(g);
		cl.setA(a);
	}
}
package Bubblesort;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//实现动画的监听器
public class ComicsListener implements  ActionListener{
	Graphics g1;
	int[] a1;
	public void setG(Graphics g){
		g1 = g;
	}
	public void setA(int[] a){
		a1 = a;
	}
	
	public void actionPerformed(ActionEvent e){
		int  m, i ,j, s, x = a1.length;
		String str;
		for(i=0; i<x; i++){
			for(j=x-1; j>i; j--){
				if(a1[j-1]>a1[j]){
					int[] a2 = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90};
					int[] a3 = a2;
					while(a1[j-1]>a1[j] && a2[j-1]<a3[j]){
						a2[j-1] = a2[j-1]+1;
						a2[j] = a2[j]-1;
						for(m=0; m<10; m++){
							g1.setColor(Color.red);
							g1.fillRect(5*a2[m], 0, 40, 10*a1[m]+50);
							g1.setColor(Color.black);
							str = String.valueOf(a1[m]);
							g1.drawString(str, 5*a2[m]+20, 10*a1[m]+60);
						}
						try {
							Thread.sleep(40);
							} catch (InterruptedException e1) {
								e1.printStackTrace();
							}
						g1.clearRect(0, 0, 800, 600);
					}
					s = a1[j-1];
					a1[j-1] = a1[j];
					a1[j] = s;
				}
				else{
					int[] a2 = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90};
					for(m=0; m<10; m++){
						g1.setColor(Color.red);
						g1.fillRect(5*a2[m], 0, 40, 10*a1[m]+50);
						g1.setColor(Color.black);
						str = String.valueOf(a1[m]);
						g1.drawString(str, 5*a2[m]+20, 10*a1[m]+60);
					}
					try {
						Thread.sleep(40);
						} catch (InterruptedException e1) {
							e1.printStackTrace();
						}
				}
			}
		}
	}
}

动画效果有点卡。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值