冒泡排序通过双重循环比较相邻元素并交换,将最大值逐步移到末尾,C++实现简单直观,适合初学者;外层控制轮数,内层进行比较交换,加入swapped标志位可提前结束,优化后最好时间复杂度为O(n)。

冒泡排序是一种简单直观的排序算法,通过重复遍历数组,比较相邻元素并交换位置,将较大元素逐步“冒泡”到数组末尾。在C++中实现冒泡排序非常直接,适合初学者理解排序逻辑。
基本思路
冒泡排序的核心是双重循环:
- 外层循环控制排序轮数,一般为 n-1 轮(n 是数组长度)
- 内层循环进行相邻元素比较和交换,每轮会把当前最大值移到正确位置
- 如果某一轮没有发生交换,说明数组已经有序,可以提前结束
代码实现
// 冒泡排序函数 void bubbleSort(int arr[], int n) { for (int i = 0; i apped = false; // 标记是否发生交换 for (int j = 0; j arr[j + 1]) { // 交换相邻元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; swapped = true; } } // 如果没有交换,说明已有序 if (!swapped) break; } }使用示例:
#include iostream> using namespace std;int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]);
cout << "排序前: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
bubbleSort(arr, n);
cout << "排序后: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
return 0;}
立即学习“C++免费学习笔记(深入)”;
优化说明
上面的实现加入了提前退出机制,当某轮遍历未发生任何交换时,立即结束排序,这对部分有序数组能显著提升效率。虽然最坏时间复杂度仍是 O(n²),但最好情况可达到 O(n)。
基本上就这些。冒泡排序实现不复杂但容易忽略细节,比如循环边界和提前退出判断。掌握它有助于理解更复杂排序算法的结构。











