冒泡排序是一种通过后面相邻两个元素依次比较大小,并将最大(最小)值往后移动,从而实现排序的一种方式。
为了方便大家理解,这里展示一下执行的动图:
代码实现:
public static void bubble(int[] arr) {
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]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
System.out.println("第" + (i + 1) + "冒泡结果:" + Arrays.toString(arr));
}
}
public static void main(String[] args) {
int[] arr = {12, 3, 89, -9, 0};
bubble(arr);
System.out.println(Arrays.toString(arr));
}
---------------------
第1冒泡结果:[3, 12, -9, 0, 89]
第2冒泡结果:[3, -9, 0, 12, 89]
第3冒泡结果:[-9, 0, 3, 12, 89]
第4冒泡结果:[-9, 0, 3, 12, 89]
[-9, 0, 3, 12, 89]
算法分析
- 时间复杂度:
(1)平均时间复杂度是:O(n^2)
(2)最好时间复杂度:O(n^2)
(3)最坏时间复杂度:O(n^2) - 空间复杂度:O(1)
参考文章:
(1)冒泡排序执行动图原地址