冒泡排序
入门最直观的排序算法,适合理解「比较-交换」的基本模式。
// 自定义输入
用你自己的数组跑一遍
速度 中
待机 ⌨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²),稳定、原地、实现简单,是排序算法的入门首选。