#include<stdio.h>
int main()///冒泡排序
{
int a[10005];
int n,temp=0,flag=0;
while(scanf("%d",&n)!=EOF)
{
int sortnum=n-1,lastsort;///优化第二歩,如果后面已经有序,小循环里就停止冒泡
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
{
flag=0; ///优化第一步,如果已经排好序了,提前跳出大循环
for(int j=0;j<sortnum;j++)
if(a[j]>a[j+1])
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
flag=1;
lastsort=j; ///每次小循环更新冒泡的结束位置
}
sortnum=lastsort; ///需要把值弄到外面另一个变量里,不然的话边冒泡边改变循环条件,难免出错
if(flag==0) break;
}
for(int i=0;i<n;i++)
printf("%d\t",a[i]);
}
return 0;
}