#include <bits/stdc++.h>
using namespace std;
int maopai_1(int a[],int c) {
int o = 0;
for(int i = c - 1;i > 0;i--) {
for(int j = 0;j < i;j++) {
o++;
if(a[j] > a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
return o;
}
int maopai_2(int a[],int c) {
int o = 0;
int flag = c;
while(flag > 1) {
int k = flag - 1;
flag = 1;
for(int j = 0;j < k;j++) {
o++;
if(a[j] > a[j+1] ) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
flag = j;
}
}
}
return o;
}
int main() {
int c;
cin>>c;
int a[c] = {0};
for(int i = 0;i < c;i++) {
cin>>a[i];
}
cout<<maopai_1(a,c)<<endl;
cout<<maopai_2(a,c)<<endl;
for(int i = 0;i < c;i++) {
cout<<a[i]<<" ";
}
return 0;
}
//输入1
//9
//1 9 2 8 3 7 4 6 5
//输出1
//36
//20
//1 2 3 4 5 6 7 8 9
//输入2
//9
//1 2 3 4 5 6 7 8 9
//输出2
//36
//8
//1 2 3 4 5 6 7 8 9
//输入3
//9
//9 8 7 6 5 4 3 2 1
//输出3
//36
//20
//1 2 3 4 5 6 7 8 9
总结分析
在输入九个打乱顺序的数字时,maopai_1代码判断了36次,maopai_2的代码却只判断了20次。
在输入九个升序的数字时,maopai_1代码判断了36次,maopai_2判断了8次。
在输入九个降序的数字时,maopai_1代码判断了36次,maopai_2判断了20次。
maopai_2通过使用FLAG了,大大提高了计算效率。