排序算法图解之Java冒泡排序及优化

  import java.util.Arrays;

  /**

  * @author 兴趣使然黄小黄

  * @version 1.0

  * 冒泡排序优化

  */

  public class BubbleSort {

  public static void main(String[] args) {

  int[] array = {5, 1, 2, 3, 4};

  //排序前

  System.out.println("排序前:" + Arrays.toString(array));

  boolean flag = false; //用于标记是否进行了交换,true则说明进行了交换,false表示无

  //冒泡排序

  for (int i = 0; i < array.length - 1; i++) {

  System.out.println("第" + (i+1) + "趟排序开始!");

  for (int j = 0; j < array.length - i - 1; j++) {

  //如果前面的数比后面的数大,则交换

  if(array[j] > array[j+1]){

  //交换

  flag = true; //标记进行了交换

  int temp = array[j];

  array[j] = array[j+1];

  array[j+1] = temp;

  }

  System.out.println("------第" + (j+1) + "趟排序: " + Arrays.toString(array));

  }

  System.out.println("第" + (i+1) + "趟排序完成: " + Arrays.toString(array));

  System.out.println("================================================");

  if (!flag){

  //如果没有进行交换则直接退出,说明排序已经完成

  break;

  }else {

  //回退

  flag = false;

  }

  }

  //输出排序后的结果

  System.out.println("排序后:" + Arrays.toString(array));

  }

  }