public class a{
public static void main(String[] args){
int[] arr = {5,3,1,2,9,4};
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int n = arr[j];
arr[j] = arr[j+1];
arr[j+1] = n;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
//优化冒泡排序
加入一个标志性的变量,用于标志某一轮排序过程中是否有数据交换,如果没有进行数据交换,
则说明数据已经按照要求排列好,可以结束排序,避免不必要的过程。
import java.util.Arrays;
public class ArrayDemo01{
public static void main(String[] args){
int[] arr1 = {6,3,1,2,5,4};
/* 要求数组里的元素 按照从小到大排序*/
for(int i=0;i<arr1.length-1;i++){
System.out.println("第"+(i+1)+"轮");
boolean f = true;//每一轮都定义一个开关
for(int j=0;j<arr1.length-1-i;j++){
if(arr1[j]>arr1[j+1]){
int t = arr1[j];
arr1[j] = arr1[j+1];
arr1[j+1] = t;
f = false;//发生交换,修改开关的状态
}
System.out.println(Arrays.toString(arr1));
}
//此轮结束,查看开关的状态
if(f){
//开关状态没变,说明已经完成了排序
// 所以,不用继续下一轮了。
break;
}
}
}
}