const int MAX_SIZE = 0xFFFFFF;
int test[MAX_SIZE];
int size;
void INIT() {
int i;
scanf("%d ",&size);
for(i = 0; i < size; i++)
{
scanf("%d ",&test[i]);
}
return;
}
void BUBBLE_SORT()
{
int i,j,tmp;
for(i = 0; i < size; i++)
{
for(j = 1; j < size-i; j++)
{
if(test[j] < test[j-1])
{
tmp = test[j-1];
test[j-1] = test[j];
test[j] = tmp;
}
}
}
return;
}
void PRINTF()
{
int i;
for(i = 0; i < size; i++)
{
printf("%d ",test[i]);
}
return;
}
void main ()
{
freopen("input.txt","r",stdin);
INIT();
BUBBLE_SORT();
PRINTF();
}
const int MAX_SIZE = 0xFFFFFF;
int test[MAX_SIZE];
int size;
void INIT() {
int i;
scanf("%d ",&size);
for(i = 0; i < size; i++)
{
scanf("%d ",&test[i]);
}
return;
}
void INSERTION_SORT()
{
int i,j,key;
for(j = 1; j < size; j++)
{
key = test[j];
i = j-1;
while(i >=0 && test[i] > key)
{
test[i+1] = test[i];
i--;
}
test[i+1] = key;
}
return;
}
void PRINTF()
{
int i;
for(i = 0; i < size; i++)
{
printf("%d ",test[i]);
}
return;
}
void main ()
{
freopen("input.txt","r",stdin);
INIT();
INSERTION_SORT();
PRINTF();
}
const int INF = 0xFFFFFF;
const int MAX_SIZE = 0xFFFF;
int test[MAX_SIZE];
int left[MAX_SIZE/2 + 1],right[MAX_SIZE/2 + 1];
int size;
void INIT() {
int i;
scanf("%d ",&size);
for(i = 0; i < size; i++)
{
scanf("%d ",&test[i]);
}
return;
}
void MERGE(int p, int q, int r)
{
int i,j,k,n1,n2;
n1 = q-p+1;
n2 = r-q;
for(i = 0; i < n1; i++)
{
left[i] = test[p+i];
}
for(j = 0; j < n2; j++)
{
right[j] = test[q+j+1];
}
left[n1] = INF; // 设置哨兵元素
right[n2] = INF;
i = 0;
j = 0;
for(k = p; k <= r; k++)
{
if(left[i] <= right[j])
{
test[k] = left[i];
i++;
}
else
{
test[k] = right[j];
j++;
}
}
return ;
}
void MERGE_SORT(int p,int r)
{
int q;
if(p < r)
{
q = (p+r)/2;
MERGE_SORT(p,q);
MERGE_SORT(q+1,r);
MERGE(p,q,r);
}
return;
}
void PRINTF()
{
int i;
for(i = 0; i < size; i++)
{
printf("%d ",test[i]);
}
return;
}
void main ()
{
freopen("input.txt","r",stdin);
INIT();
MERGE_SORT(0,size-1);
PRINTF();
}