冒泡排序算法的时间复杂度为O(n2)。
【输入样例】
8
7 13 4 5 8 1 11 9
【输出样例】
1 4 5 7 8 9 11 13
【参考程序】
//爱码岛编程
#include <iostream>
using namespace std;
int arr[10005];
int main() {
int n;
cin >> n;
//输入n个数字
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
//冒泡排列(升序)
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) { //降序改成<
// swap
int tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
//排序后结果
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
【改进版参考程序】
//爱码岛编程
#include <iostream>
using namespace std;
int arr[10005];
int main() {
int n;
cin >> n;
//输入n个数字
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
//冒泡排序(升序)
bool flag = false;
for (int i = 0; i < n - 1; i++) {
flag = true;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) { //降序改成<
swap(arr[j], arr[j + 1]);
flag = false;
}
}
if (flag) {
break;
}
}
//排序后结果
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}