排序算法图解之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));
}
}