package demo_test;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = new int[10];//初始化数组
for(int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random()*100);//填充数组,10个0-100的随机数
}
System.out.println("打印初始数组");
for(int i:arr) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("各层排序数组打印");
System.out.println("*******************************");
/*外层:(可从后向前看)从倒数第一位到顺数的第二位,进行遍历
* 顺数的第一位实际已经排序,无需再取值排序。
*/
for(int i = 0; i < arr.length - 1; i++) {
boolean b = true; //为优化冒泡排序,即若某次在比较的过程中没有两数的交换,则跳出。
/*内层:第一次排序,从第一位开始到倒数的第二位(从下标来看)
*
*/
for(int j = 0; j < arr.length - i -1; j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j]; //交换数值
arr[j] = arr[j+1];
arr[j+1] = temp;
b = false;
}
}
if(b) {
break; //若此排序过程中没有交换,则可以确定已经排序完成。跳出
}
for(int a: arr) {
System.out.print(a + " ");
}
System.out.println();
}
}
}