老师所教的,记录下来
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));
}
}