冒泡排序
冒泡排序算法的时间复杂度为O(n²)
【输入描述】
输入两行。第一行输入数组大小 n 。第二行输入 n 个数字。
【输出描述】
输出一行。输出排序后的数字。
【输入样例】
8
7 13 4 5 8 1 11 9
【输出样例】1 4 5 7 8 9 11 13
【参考程序】
//小牛编程
#include <iostream>
using namespace std;
int arr[10001];
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[10001];
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; 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;
}