冒泡排序是最基础的交换排序算法,核心思想是相邻元素两两比较,把大的往后"冒泡"。每一轮会把当前未排序部分的最大值推到末尾。
时间复杂度:最坏 O(n²),最好(优化版)O(n),平均 O(n²)。空间复杂度 O(1),是原地排序。
5\n5 3 8 1 27#include <iostream>
using namespace std;
int main() {
int n, a[105];
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
int cnt = 0; // 交换次数计数器
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
cnt++; // 每交换一次计数+1
}
}
}
cout << cnt << endl;
return 0;
}