是什么
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动;
思想
从前往后,依次比较相邻的元素值,将较大元素后移,就像水泡上冒;
复杂度
时间:O(n^2)
空间:O(1)
Java Demo
public class MaoPaoSort {
private static int[] arr = {3, 9, -1, 10, -2};
public static void main(String[] args) {
int length = arr.length;
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
flag = true;
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
System.out.printf("第%d次排序\n", i + 1);
System.out.println(Arrays.toString(arr));
}
}
}
优化
public class MaoPaoSort {
// private static int[] arr = {3, 9, -1, 10, -2};
private static int[] arr = {1,2,3,4,5};
public static void main(String[] args) {
int length = arr.length;
for (int i = 0; i < length - 1; i++) {
// 是否有交换
boolean flag = false;
for (int j = 0; j < length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
flag = true;
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
System.out.printf("第%d次排序\n", i + 1);
System.out.println(Arrays.toString(arr));
if (!flag) {
System.out.println("over");
break;
}
}
}
}