#include<iostream>
#include<vector>
int n;
int a[110000];
void sort(int l,int r)
{
if(l>=r)return ;
int mid=(l+r)/2;
sort(l,mid);
sort(mid+1,r);
std::vector<int>vec;
int i,j;
for(i=l,j=mid+1;i<=mid&&j<=r;)
{
if(a[i]<a[j])
{
vec.push_back(a[i]);
i++;
}
else
{
vec.push_back(a[j]);
j++;
}
}
while(i<=mid)
{
vec.push_back(a[i]);
i++;
}
while(j<=r)
{
vec.push_back(a[j]);
j++;
}
for(i=l;i<=r;i++)
{
a[i]=vec[i-l];
}
}
int main()
{
std::cin>>n;
for(int i=1;i<=n;i++)
{
std::cin>>a[i];
}
sort(1,n);
for(int i=1;i<=n;i++)
{
std::cout<<a[i]<<" ";
}
}
#include<iostream>
#include<stdlib.h>
int n;
int a[1100000];
void quick_sort(int l,int r)
{
if(l>=r)return ;
int pos=rand()%(r-l+1)+l;
std::swap(a[l],a[pos]);
int temp=a[l];
int i=l,j=r;
while(i<j)
{
while(a[j]>=temp&&i<j)
{
j--;
}
while(a[i]<=temp&&i<j)
{
i++;
}
if(i<j)
{
std::swap(a[i],a[j]);
}
}
a[l]=a[i];
a[i]=temp;
quick_sort(l,i-1);
quick_sort(i+1,r);
}
int main()
{
std::ios::sync_with_stdio(0);std::cin.tie(0);std::cout.tie(0);
std::cin>>n;
for(int i=1;i<=n;i++)
{
std::cin>>a[i];
}
quick_sort(1,n);
for(int i=1;i<=n;i++)
{
std::cout<<a[i]<<" ";
}
}
#include<iostream>
int n;
int a[110000];
void heapadjust(int start,int end)
{
int temp=a[start];
for(int i=start*2+1;i<=end;i=i*2+1)
{
if(i+1<=end&&a[i]<a[i+1])
{
i++;
}
if(a[i]>temp)
{
a[start]=a[i];
start=i;
}
else break;
}
a[start]=temp;
}
void heapsort(int len)
{
for(int i=len/2-1;i>=0;i--)
{
heapadjust(i,len-1);
}
for(int i=0;i<len;i++)
{
std::swap(a[0],a[len-1-i]);
heapadjust(0,len-1-i-1);
}
}
int main()
{
std::cin>>n;
for(int i=0;i<n;i++)
{
std::cin>>a[i];
}
heapsort(n);
for(int i=0;i<n;i++)
{
std::cout<<a[i]<<" ";
}
}