输入:第一行输入n,接下来输入n个元素,
输出:最后经过冒泡排序后的顺序 ,排序的次数
要注意布尔flag的初始化,还有17行是一个简化处理
#include<iostream>
#include<cstdio>
using namespace std;
void print(int a[],int n){
for(int i=0;i<n;i++){
if(i!=0)
cout<<" ";
cout<<a[i];
}
cout<<endl;
}
int bubbleSort(int a[],int n){
int cnt=0;
bool flag=1;
//i是未排序部分的开头元素
for(int i=0;flag;i++){ //每完成一次冒泡排序,已排序部分的元素就会多一个,未排序部分的元素就会少一个。
flag=0;
for(int j=n-1;j>=i+1;j--){
if(a[j]<a[j-1]){
swap(a[j],a[j-1]);
flag=1; //存在顺序相反的相邻元素
cnt++;
}
}
}
return cnt;
}
int main(){
int n;
int a[101];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];}
int result=bubbleSort(a,n);
print(a,n);
cout<<result<<endl;
return 0;
}