Pagini recente » Sedinta 2008-10-21 | Istoria paginii planificare/sedinta_20070424 | Profil horeapinca | Profil bibiancapitu2004 | Cod sursa (job #503437)
Cod sursa(job #503437)
#include<stdio.h>
#define NR 500000
long v[NR],n;
void merge(long v[NR],long p,long m,long q)
{long i=p,y[NR],ny=p,j=m+1,k;
while(i<=m&&j<=q)
{if(v[i]<=v[j])
y[ny++]=v[i++];
else
y[ny++]=v[j++];}
while(i<=m)
y[ny++]=v[i++];
while(j<=q)
y[ny++]=v[j++];
for(k=p;k<=q;k++)
v[k]=y[k];}
void mergeSort(long v[NR],long p,long q)
{long m=(p+q)/2;
if(p<q)
{mergeSort(v,p,m);
mergeSort(v,m+1,q);
merge(v,p,m,q);}}
void tipar(long v[NR],long n)
{int i;
for(i=0;i<n;i++)
printf("%ld ",v[i]);
printf("\n");}
int main()
{long i;
freopen("algsort.in","rt",stdin);
freopen("algsort.out","wt",stdout);
scanf("%ld",&n);
for(i=0;i<n;i++)
scanf("%ld",&v[i]);
mergeSort(v,0,n-1);
tipar(v,n);
fclose(stdin);
fclose(stdout);
return 0;}