冒泡排序,以从小到大排序为例:从数组的第一个开始往后(上)遍历,如果碰到大的就交换,想想一下第一个数为小气泡,往后遍历就是往上冒,气泡越来越大。冒泡排序最多冒泡n-1次,时间复杂度为O(n^2)。冒泡排序是原地稳定的排序。
public static void bubbleSort(int[] a){
for (int i = 0;i<a.length;i++){
boolean flag = false;
for (int j = 0;j<a.length-i-1;j++){
if (a[j]>a[j+1]){
// 如果有交换标记一下
flag = true;
int temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
// 没有交换了就退出循环,减少循环次数
if (!flag){
break;
}
}
}