Pagini recente » Cod sursa (job #116069) | Cod sursa (job #715962) | Cod sursa (job #3322206) | Cod sursa (job #998253) | Cod sursa (job #1467129)
#include <cstdio>
#include <algorithm>
using namespace std;
int a[500023],b[500023];
int n;
void brute(int s,int e)
{
for(int i=s;i<=e;i++)
{
for(int j=i+1;j<=e;j++)
{
if(a[i]>a[j]) swap(a[i],a[j]);
}
}
}
void interclas(int s,int e)
{
int mij=(s+e)/2;
int p1=s,p2=mij+1;
for(int xy=s;xy<=e;xy++)
{
if((p1<=mij&&a[p1]<a[p2])||p2>e)
{
b[xy]=a[p1];
p1++;
}
else
{
b[xy]=a[p2];
p2++;
}
}
for(int i=s;i<=e;i++)
{
a[i]=b[i];
}
}
void mergesort(int s,int e)
{
if(e-s+1<=3) brute(s,e);
else
{
int mij=(s+e)/2;
mergesort(s,mij);
mergesort(mij+1,e);
interclas(s,e);
}
}
int main()
{
freopen ("algsort.in","r",stdin);
freopen ("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
mergesort(1,n);
for(int i=1;i<=n;i++) printf("%d ",a[i]);
}