升入初中……然后报名CSP-J
开始训练算法。
今天还是回到C++吧。
冒泡排序我觉的是算法中最基础的。所以我才记得住……
MinGW版本的:
#include <bits/stdc++.h>
using namespace std;
int main() {
int sums;
cin >> sums;
int before[sums + 1], after[sums + 1];
memset(after, 0, sizeof(after));
for(int i = 1; i <= sums; i ++) {
cin >> before[i];
after[i] = before[i];
}
for(int i = 1; i <= sums - 1; i ++) {
for(int j = i; j <= sums; j ++) {
if(after[i] > after[j]) {
int temp = after[i];
after[i] = after[j];
after[j] = temp;
}
}
}
for(int i = 1; i <= sums; i ++) {
cout << after[i] << ' ';
}
cout << endl;
return 0;
}
嗯……逐步分析下。
代码写得比较保守,因此保留了before
。
第一句:
#include <bits/stdc++.h>
using namespace std;
万能库,不用说吧。。。
然后:
int sums;
cin >> sums;
int before[sums + 1], after[sums + 1];
memset(after, 0, sizeof(after));
首先输入有多少的数,输入下。
for(int i = 1; i <= sums; i ++) {
cin >> before[i];
after[i] = before[i];
}
逐个输入数组内数据。
然后是双重排序:
for(int i = 1; i <= sums - 1; i ++) {
for(int j = i; j <= sums; j ++) {
if(after[i] > after[j]) {
int temp = after[i];
after[i] = after[j];
after[j] = temp;
}
}
}
冒泡就是这样,如果不行,交换下,因此时间复杂度还是稳定的,是(O(n^2))
for(int i = 1; i <= sums; i ++) {
cout << after[i] << ' ';
}
cout << endl;
return 0;
一个个输出,最后换行。