也是一种稳定的排序法
利用了相邻两元素之间的交换
对于有序序列,执行效率较高。
交换次数,为逆序数,反映了数据的复杂程度。
注意要有清晰的程序设计思路,尽量一次写出,避免调试错误。
#include <iostream>
#include <cstdio>
using namespace std;
const int max_n=100;
int a[max_n];
int bubble_sort(int a[],int n)
{
int cnt=0;
bool flag=true;
for(int i=0;i<n-1 && flag;++i)
{
flag=false;
for(int j=1;j<n-i;++j)
{
if(a[j-1]>a[j])
{
a[j-1]^=a[j];
a[j]^=a[j-1];
a[j-1]^=a[j];
cnt++;
//cout<<">";
flag=true;
}
}
}
return cnt;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;++i)
{
scanf("%d",&a[i]);
}
int cnt=bubble_sort(a,n);
for(int i=0;i<n-1;++i)
{
cout<<a[i]<<' ';
}
cout<<a[n-1]<<endl;
cout<<cnt<<endl;
return 0;
}