Pagini recente » Cod sursa (job #2189420) | Cod sursa (job #717362) | Cod sursa (job #1239190) | Cod sursa (job #2056399) | Cod sursa (job #1525292)
#include <stdio.h>
using namespace std;
int aux[500000];
void intercalare(int s, int d, int m, int *v)
{
int i,k,j=m+1;
i=k=s;
while(i<=m&&j<=d) aux[k++] = v[i]<v[j] ? v[i++] : v[j++];
while(i<=m) aux[k++]=v[i++];
while(j<=d) aux[k++]=v[j++];
i=s;
while(i<=d) v[i]=aux[i++];
}
void mergesort(int s, int d, int *v)
{
if(s==d) return;
int m=(s+d)/2;
mergesort(s,m,v);
mergesort(m+1,d,v);
intercalare(s,d,m,v);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int v[500000],i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",v+i);
mergesort(0,n-1,v);
for(i=0;i<n;i++)
printf("%d ",v[i]);
return 0;
}