import java.util.Random;
public class BubbleSort {
public static void main(String[] args) {
//1.随机产生10个100以内的整数
int[] arr=new int[10];
Random ran=new Random();
for(int i=0;i<arr.length;i++){
arr[i]=ran.nextInt(100);
}
//2.进行冒泡排序
sort(arr);
//3.查看最后排序结果
System.out.println(Arrays.toString(arr));
}
//冒泡排序
public static void sort(int[] arr){
//有效代码1:第一层循环表示需要冒泡的次数,因为最后剩下的那个数不需要冒泡,所以整个冒泡过程需要冒泡的次数为:arr.length-1次。
for(int i=0;i<arr.length-1;i++){
//有效代码2:第二层循环表示需要冒泡的数据的范围,因为已经冒出来的数据不需要再进行冒泡,所以需要排除在外。
//因为我们整个冒泡的设计思想是每一次循环把剩下数据中最大的数据冒到最后的位置,所以后面已经冒出来的数据不需要再进行冒泡
//所以每次冒泡的范围为从第一个位置到arr.length-i-1的位置
//arr.length-i-1: arr.length-1表示总共需要冒泡的次数,i表示已经冒的次数,所以arr.length-i-1表示剩下的需要冒的次数。
for(int j=0;j<arr.length-i-1;j++){
//每一次冒泡都需要把当前数据和他后面的那个数据进行比较。
//通过if(arr[j]>arr[j+1])最后得到的数据是按照从小到大的顺序排序的
//如果想按照从大到小的顺序排序,则需要这样写: if(arr[j]<arr[j+1])
if(arr[j]>arr[j+1]){
//如果当前数据比它后面的那个数据大,则两者交换位置,否则位置不变。
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}