排序

一、冒泡排序

1、理解定义:循环走过需要排序的元素,依次比较相邻的两个元素,当前一个数字比后一个数字大时,就交换位置,直至没有元素交换,完成排序。由从小到大的顺序,一点点地把小的挪到前面,直到完全整齐地拍好为止。弄成矩形就感觉一个个矩形交换的时候像浮起来一样,从后往前(从下往上)就像冒泡一样,这样得名冒泡排序。

2、代码实现思路

  1. 比较相邻的元素,如果前一个元素比后一个元素大,就交换;
  2. .采用for循环 对每一对相邻元素做相同的工作,直到最后一组为止;
  3. 针对所有元素重复以上步骤,最后一个元素是最大的;

3、主要代码f方法

public void shorV(){
for(int i=0;i<arr.length;i++){
for(int j=1;j<arr.length;j++){
if(arr[i]>arr[j]){
int a=arr[i];
arr[j]=arr[i];
arr[j]=a;
}
}
}
for(k=0;k<arr.length;k++){
system.out.println("     "+  arr[k] )
}
}

上述代码中,arr代表未经排序的数列,经过该方法后arr就会变成按小到大排列的数列

二、选择排序

1.理解定义:计算机先对所有数字查看一边找出最小的数字,将其提到第一个,依次这样进行,直到最后一个为最大的为止。

2、代码思路: 第一次从 arr[0]~arr[n-1]中选取最小值, 与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2] 交换,…,第 i 次从 arr[i-1]~arr[n-1]中选取最小值,与 arr[i-1]交换,…, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值, 与 arr[n-2]交换,总共通过 n-1 次,得到一个按排序码从小到大排列的有序序列。

3.代码:

public class VTest {

	int[] ir = { 9, 7, 8, 0, 1, 3, 6, 4, 5 };
	Graphics g;
	
	public void shorV() {		
			JFrame jf=new JFrame();
			jf.setTitle("选择排序");
			jf.setSize(1100,750);
			jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
			jf.setLocationRelativeTo(null);
			jf.setLayout(new BorderLayout());//边框布局
			jf.setVisible(true);
			g = jf.getGraphics();	
			
			
     for(int i = 0; i< ir.length; i++) {
    	 
	for(int j = i+1; j < ir.length; j++){
//交换位置,引入一个中间值,采用赋值的方法,先交换再画图;若将此放到画完图的代码后面,最后一个图就不会交换了,因为数字已经交换完成了,就不会回去了
				if(ir[i]>ir[j]){			
					int a=ir[j];
					ir[j]= ir[i];				
					ir[i]=a;	
					
					g.clearRect(0, 0, 900, 900);//清屏
					for(int k = 0; k< ir.length; k++){
						
							
						g.drawString(" "+ir[k], 300+24*k, 410);
						g.drawRect(300+24*k, 400, 20, -ir[k]*30);
						g.setColor(Color.BLUE);
				}	
								
				}
				
				//休眠
				try {
					Thread.sleep(300);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
								
		    }		
		}
		for (int i = 0; i < ir.length; i++) {			
			System.out.print(ir[i] + "  ");			
		}
     }
		
	
		
	public static void main(String[] args) {		
		new VTest().shorV();   
        } 
	}

三、补充拓展

java:十大排序
冒泡排序、选择排序、堆排序、希尔排序、快速排序等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值