普通冒泡排序:
//Wecccccccc
//2021.1.6
#include <iostream>
using namespace std;int main() {int n, a[100];cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];}for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1; j++) {if (a[j] > a[j + 1]) {int temp;temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}for (int i = 0; i < n; i++) {cout << a[i] << " ";}cout << endl;return 0;
}
用一个flag标记进行优化,如果排到某一次以后,接下来的元素全部是有序的,就不用排了。
代码如下:
//Wecccccccc
//2021.1.6
#include <iostream>
using namespace std;int main() {int n, a[100];cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];}int flag ;for (int i = 0; i < n - 1; i++) {flag = 0;for (int j = 0; j < n - 1; j++) {if (a[j] > a[j + 1]) {int temp;temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;flag = 1;}if (flag == 0) {for (int i = 0; i < n; i++) {cout << a[i] << " ";}cout << endl;return 0;}}}for (int i = 0; i < n; i++) {cout << a[i] << " ";}cout << endl;return 0;
}