• 依次将相邻的两个元素进行比较,把较大的元素交换到后面,这样一轮循环下来,就可以找到这一轮循环中最大的那个元素,我们把这个过程形象地称之为“冒泡”;
    • 由于每一轮循环都「冒泡」出一个这一轮循环最大的元素,所以上一轮循环的最后一个元素,没有必要再参加下一轮循环的比较了;
    • 「冒泡排序」有个特点:在遍历的过程中,可以提前检测到数组是有序的,从而结束排序。
      ```java public static void bubbleSort(int[] arr) {

      1. for (int i = 0; i < arr.length;i++) { //外层循环,控制循环的次数
      2. boolean flag=false;
      3. for (int j = 0; j < arr.length-i-1; j++) { //内层循环控制每次循环时,比较交换的次数
      4. if (arr[j] > arr[j+1]) { //将大的数字逐渐后移
      5. Utils.swap(arr, j, j+1);
      6. flag=true;
      7. }
      8. }
      9. if (!flag) { //在一趟循环中没有发生交换,说明数组已经有序,可以提前结束循环
      10. break;
      11. }
      12. }

      }

      public class Utils { //数组元素的交换经常使用,故建立一个工具类,方便后续调用。

      1. public static void swap(int[] arr, int fir, int sec) {
      2. int temp = arr[fir];
      3. arr[fir] = arr[sec];
      4. arr[sec] = temp;
      5. }

      }

    ```