冒泡排序

入门

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

用你自己的数组跑一遍

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²)

算法讲解

冒泡排序的核心思想是:每一轮遍历将当前未排序部分的最大值「冒泡」到末尾。

对于长度为 n 的数组,最多需要 n-1 轮外层循环;每轮内层循环的范围逐渐缩小。

如果某一轮没有发生任何交换,说明数组已经有序,可以提前终止。

时间复杂度 O(n²),稳定、原地、实现简单,是排序算法的入门首选。