Java学习日记:UI篇(4)--冒泡排序动态展示

Java学习日记:UI篇(4)–冒泡排序动态展示

排序原理:持续比较相邻的元素,大的移到后面,因此大的会逐渐后移,形成有序序列。

冒泡排序,直接在终端输出结果:

package array;

import java.util.Arrays;
public class BubbleSort {
	public void way() {
		int array[]  = {1,4,5,2,3,6};
	
		for(int i=0;i<array.length;i++) {
			for(int j=0;j<array.length-1;j++) {
				if(array[j]>array[j+1]) {
					int temp = array[j];
					array[j]=array[j+1];
					array[j+1]=temp;					
				}
			}
			int K=i+1;
			System.out.println(K+"次排序结果:"+Arrays.toString(array));
		}
		System.out.println(Arrays.toString(array));
	}
	public static void main(String[] args) {
		BubbleSort bs=new BubbleSort();
		bs.way();
	}
}


        ~~~~~~~        动态展示原理:利用上一节的画图板动态绘制展示排序过程。由于计算机运行速度较快,所以我们需要用到线程休眠(Thread.sleep(1000);),这里是让它休眠1s,这样我们就可以以适当的速度看到整个排序过程。为了让它更好的运行,这里最好使用:

try { 
		Thread.sleep(1000);//1000 = 1s
		} catch (InterruptedException e1) {
		// TODO Auto-generated catch block
					e1.printStackTrace();
		}

动态展示完整的代码:

package array;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Arrays;
import javax.swing.JFrame;

public class SortingDisplay {

	public void showUI() {
		
		int array[]  = {12,8,10,9,7,6,5,3,2,1,};//这里是我们要排序的数组
		JFrame jf =new JFrame();
		for(int i=0;i<array.length;i++) {
			
			jf.setTitle("画图板");
			jf.setSize(500,450);
			
			jf.setLocationRelativeTo(null);//默认居中
			jf.setDefaultCloseOperation(3);//关闭
			jf.setResizable(true);//固定大小
			jf.setVisible(true);		 
			Graphics g =jf.getGraphics();
			
			for(int j=0;j<array.length-1;j++) {
				
				if(array[j]>array[j+1]) {
					int temp = array[j];
					array[j]=array[j+1];
					array[j+1]=temp;											
				}
				
				g.setColor(Color.ORANGE);
				g.fillRect(100+30*j, 400-array[j]*30, 10, array[j]*30);//因为画图的远点在左上角,这里的操作让整个图形的基准在下方
											
			}
			
			// 线程休眠 
			try { 
			Thread.sleep(1000);//1000 = 1s
			} catch (InterruptedException e1) {
			// TODO Auto-generated catch block
						e1.printStackTrace();
			}
		int K=i+1;
			System.out.println(K+"次排序结果:"+Arrays.toString(array));
		}
		System.out.println(Arrays.toString(array));//在终端中打印排序结果

		}
		System.out.println(Arrays.toString(array));
	}	
	public static void main(String[] args) {
		SortingDisplay sd=new SortingDisplay();
		//sd.way();
		sd.showUI();
	}
}

结语:理论的学习是枯燥,加入一些有趣的操作会让学习变得愉悦。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值