java之数组的冒泡排序详细

老师所教的,记录下来

package demoArraySort;
/*
 * 
 * 数组排序
 * Arrays.sort(数组变量)  默认是升序排列
 * 
 */

import java.util.Arrays;

public class Demo {
	public static void main(String[] args) {
		/*int[] ints={1,7,3,5,8};*/
		/*System.out.println("排序前:"+Arrays.toString(ints));
		Arrays.sort(ints);
		System.out.println("排序后:"+Arrays.toString(ints));*/
		
		//两个变量交换位置:
/*			int a=10;
			 
			int b=20;
			
//			交换的代码
			int temp=a;
			a=b;
			b=temp;
			
			
			
			System.out.println("a:"+a);
			System.out.println("b:"+b);*/
		
		
		/*
		 * 冒泡排序四次优化:
		 * 	第一次:
		 * 		内层循环ints.length-1 因为倒数第二个元素可以跟倒数第一个比较
		 * 			但是倒数第一个就不能跟后面比了
		 * 
		 *	第二次优化:
		 *		外层循环 ints.length-1
		 *			因为5个数 冒泡四次 就出来结果
		 *
		 *	第三次优化:
		 *		内层循环 ints.length-1-外层循环变量
		 *		每经过一轮冒泡 都会冒出一个最小值
		 *		下一轮再比较时  不需要再 比较上次冒出的这个最小值了
		 *		也就是每轮冒泡后 都少比较一次
		 * 
		 * 第四次优化:
		 * 		开闭原则  一旦排序已经成功 那么随时停止  冒泡排序的循环
		 * 
		 */
			
		int[] ints={7,8,5,3,1};
//		自定义排序
		System.out.println("排序前:"+Arrays.toString(ints));
		for(int j=0;j<ints.length-1;j++){
			boolean boo=true;//假设本轮冒泡 不会出现 前边比后面小
			for(int i=0;i<ints.length-1-j;i++){
				if(ints[i]<ints[i+1]){//这个if语句如果为true 表示有前边比 后面小的元素
//					两两比较交换位置
					int temp=ints[i];
					ints[i]=ints[i+1];
					ints[i+1]=temp;
					
					boo=false; //一旦执行这个if语句 表示 当前数组不符合我的假设
								//也就是前边 有比后边小的元素 也就是说并没有排出顺序
					
					
					
				}
				System.out.println("当前是第:"+j+"轮,第:"+i+"次比较!交换后的结果:"+Arrays.toString(ints));
			}
			System.out.println("当前是第:"+j+"轮,冒泡后的结果是:"+Arrays.toString(ints));
			if(boo){//一旦boo是true 表示我的假设成立了 也就是 我的假设是对的 也就是说已经排出顺序了
						//那么就可以停止循环了
				
				break;
				
			}
		}
		
		System.out.println("排序后:"+Arrays.toString(ints));
		
		
		
	
		
		
		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值