冒泡排序

入门

最直观的排序算法,适合理解「比较-交换」的基本模式。

冒泡排序的名字来自一个生动的比喻:较大的元素像气泡一样,在每一轮遍历中慢慢「浮」到数组的末尾。

想象一排身高不同的人站成一列。你从左到右依次比较相邻的两个人,如果左边的人更高,就让他们交换位置。一轮下来,最高的人就到了最右边。

重复这个过程,每轮都能把当前最高的人送到正确位置。当某一轮没有任何交换发生时,说明所有人已经排好序了,可以提前结束。

AlgoAnim · 冒泡排序
速度
待机
// 源代码
1void bubbleSort(int arr[], int n) {
2    for (int i = 0; i < n - 1; i++) {
3        bool swapped = false;
4        for (int j = 0; j < n - 1 - i; j++) {
5            if (arr[j] > arr[j + 1]) {
6                int temp = arr[j];
7                arr[j] = arr[j + 1];
8                arr[j + 1] = temp;
9                swapped = true;
10            }
11        }
12        if (!swapped) {
13            break;
14        }
15    }
16}

复杂度分析

时间 O(n²)
空间 O(1)
最优 O(n)
最坏 O(n²)