- 依次将相邻的两个元素进行比较,把较大的元素交换到后面,这样一轮循环下来,就可以找到这一轮循环中最大的那个元素,我们把这个过程形象地称之为“冒泡”;
- 由于每一轮循环都「冒泡」出一个这一轮循环最大的元素,所以上一轮循环的最后一个元素,没有必要再参加下一轮循环的比较了;
「冒泡排序」有个特点:在遍历的过程中,可以提前检测到数组是有序的,从而结束排序。
```java public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length;i++) { //外层循环,控制循环的次数
boolean flag=false;
for (int j = 0; j < arr.length-i-1; j++) { //内层循环控制每次循环时,比较交换的次数
if (arr[j] > arr[j+1]) { //将大的数字逐渐后移
Utils.swap(arr, j, j+1);
flag=true;
}
}
if (!flag) { //在一趟循环中没有发生交换,说明数组已经有序,可以提前结束循环
break;
}
}
}
public class Utils { //数组元素的交换经常使用,故建立一个工具类,方便后续调用。
public static void swap(int[] arr, int fir, int sec) {
int temp = arr[fir];
arr[fir] = arr[sec];
arr[sec] = temp;
}
}
```