一、文字解释冒泡排序
- 冒泡就是一个找冒泡的数字的过程,以升序为例。
- 从数组第一个元素开始,跟下一个元素比较,如果比下一个元素大就交换,然后再跟下一个元素比大小,直到数组结尾,这样一轮下来之后,数组中最大的数字被交换到了最后一个位置。
- 然后我们忽视找到的这个最大的数字,只看数组中前面的数,继续做第2部的操作,直至完成升序的排列。
二、动图演示冒泡排序过程
三、代码
public class BubbleSort {
/*
* 1,交换的条件是左面的数比右面的数大
* 2,一共比较n-1轮
* 3,每轮比较次数是当前数后面数的个数,也就是(数据长度-n-1)次
* 4,冒泡排序是稳定排序
* */
public static void main(String[] args) {
int arr[] = {23, 51, 6, 7, 3, 1, 13, 14};
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) { //升序大于号,降序小于号
arr[j] = arr[j] + arr[j + 1];
arr[j + 1] = arr[j] - arr[j + 1];
arr[j] = arr[j] - arr[j + 1];
}
}
}
System.out.println(Arrays.toString(arr));
}
}
输出结果:
[1, 3, 6, 7, 13, 14, 23, 51]
四、时间复杂度
平均时间复杂度O(n ^ 2),最好情况O(n),最坏情况O(n ^ 2)