java 冒泡排序法 比较相邻的元素。如果第一个比第二个大,就交换他们两个

package demo;
public class TestArraySort{
	public static void main(String[] args){
		int[] a = {8,5,4,3,7,2};
		
		//冒泡排序法  相邻的元素比较每次找处最大的数.
		
		/*
		      0 1 2 3 4 5		n=6	长度a.length
								n = a.length =6
			  
			  8 5 4 3 7 2		循环  i = 0 ;  i < a.length-1 ; i++ 次
								循环==(n-1)==5次;
			  
		循环第1次
		0-1   5 8 4 3 7 2
		1-2   5 4 8 3 7 2		比较5次
        2-3   5 4 3 8 7 2		i=0
        3-4   5 4 3 7 8 2		j=0;j<5;j++
        4-5   5 4 3 7 2 8		

		循环第2次
		0-1   4 5 3 7 2 8     
		1-2   4 3 5 7 2 8		i=1
		2-3   4 3 5 7 2 8 		j=0;j<4;j++
        3-4   4 3 5 2 7 8		比较4次

		循环第3次
		0-1   3 4 5 2 7 8		i=2
		1-2   3 4 5 2 7 8		j=0;j<3;j++
		2-3   3 4 2 5 7 8		比较3次
		
        循环第4次		
		0-1   3 4 2 5 7 8		i=3
		1-2   3 2 4 5 7 8		j=0;j<2;j++
								比较2次
		
		循环第5次
		0-1   2 3 4 5 7 8     	i=4    j=0;j<1;j++
								比较1次
								
								比较 j = 0; j < a.length - 1 -i ; j++
		*/
		int r = 0;//比较次数
		for(int i = 0 ; i < a.length - 1 ; i ++){
			for(int j = 0 ; j < a.length -1 -i; j ++){//比较次数
				//比较a[j]和a[j+1]
				for(int n = 0 ; n < a.length ; n++){
					System.out.print(a[n]+"\t");//比较之前先打印一次,然后比较一次打印一次.
				}
				System.out.println();//打印换行
				System.out.println();//打印换行
				if (a[j] > a[j+1]){
					int t = a[j];
					a[j] = a[j+1];
					a[j+1] = t;		
				}
				r++;//比较次数
			}		
		}
		for( int i = 0; i < a.length ; i ++){
			System.out.print(a[i]+"\t");	
		}
		System.out.println();
		System.out.println("比较"+r+"次");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值