Pagini recente » Cod sursa (job #2329533) | Cod sursa (job #2664548) | Cod sursa (job #2170436) | Cod sursa (job #2219855) | Cod sursa (job #2200891)
#include <bits/stdc++.h>
using namespace std;
int n,v[500005];
int aux[500005];
void merge(int st,int dr,int mij)
{
int i=st;
int j=mij+1;
int pos=i;
while(i<=mij || j<=dr)
{
if(j>dr || (i<=mij && v[i]<v[j]))
{
aux[pos]=v[i];
i++;
}
else
{
aux[pos]=v[j];
j++;
}
pos++;
}
for(int g=st;g<=dr;g++)
v[g]=aux[g];
}
void merge_sort(int st,int dr)
{
int mij;
if(st<dr)
{
mij=(st+dr)/2;
merge_sort(st,mij);
merge_sort(mij+1,dr);
}
else
return;
merge(st,dr,mij);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
merge_sort(1,n);
for(int i=1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}