什么是冒泡排序?
冒泡排序就是让数组中的数字和下一位比较,从而让大的数字在一轮比较后移动到最后面。
优化:
- 如果改变了顺序就改变isOrdered,若没改变就break,循环直接结束。
- 加上一个边界值,边界后面的都是已经排序好的,所以不需要遍历。
时间复杂度:O(n²)
他是一个稳定的排序算法
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
public class BubbleSort {
public static void bubbleSort(int[] array){
//数组长度
int length = array.length;
int tmp = 0;
//最后一个改变了数字的地方
int lastExchangeNum = 0;
//每次里面一个for执行时和border比较,
//border后面的为已经有序的
int border = length - 1;
for (int i = 0 ; i < length - 1 ; i++){
//判断是否有序了
//如果有序就跳出循环返回数组,否则继续
boolean isOrdered = true;
for (int j = 0 ; j < border ; j++) {
if (array[j] > array[j + 1]) {
tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
lastExchangeNum = j + 1;
//进行了排序,所以不是有序的。
isOrdered = false;
}
}
border = lastExchangeNum;
//已经有序了就跳出循环
if (isOrdered)
break;
}
}
}