c++冒泡排序
时间: 2025-05-21 21:29:03 浏览: 15
### C++ 实现冒泡排序
以下是基于提供的引用内容以及专业知识整理的关于如何使用 C++ 实现冒泡排序的内容。
#### 冒泡排序基本原理
冒泡排序的核心思想是比较相邻的两个元素,如果它们不符合顺序,则交换其位置。这一过程会反复执行直到整个序列变得有序[^1]。该算法的时间复杂度为 \( O(n^2) \),空间复杂度为 \( O(1) \)[^2]。
#### 示例代码实现
下面是一个完整的 C++ 程序用于演示冒泡排序:
```cpp
#include <iostream>
using namespace std;
// 定义冒泡排序函数
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) { // 外层循环控制遍历次数
bool swapped = false; // 添加优化标记变量
for (int j = 0; j < n - i - 1; j++) { // 内层循环完成单次比较和交换
if (arr[j] > arr[j + 1]) { // 如果当前元素大于下一个元素
// 进行交换操作
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true; // 表明发生了交换
}
}
if (!swapped) break; // 若未发生任何交换,提前结束
}
}
// 主程序测试冒泡排序功能
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "排序前的数组:" << endl;
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
bubbleSort(arr, n);
cout << "排序后的数组:" << endl;
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
此代码实现了标准版的冒泡排序逻辑,并加入了一个 `swapped` 变量作为优化手段,当某一轮遍历时没有任何数据被交换时即可终止后续不必要的迭代[^3]。
#### 关于稳定性讨论
尽管有提到冒泡排序属于一种稳定性的排序方法[^4],但在实际应用中需要注意特定场景下可能因具体实现而影响到这种特性。因此,在设计过程中应确保相同键值的数据项不会因为额外条件干扰而导致原本先后顺序发生变化。
---
阅读全文
相关推荐













