Pagini recente » Cod sursa (job #1288883) | Cod sursa (job #115964) | Cod sursa (job #2040964) | Istoria paginii utilizator/petrescubianca | Cod sursa (job #431172)
Cod sursa(job #431172)
#include<stdio.h>
#define Nmax 500001
int n,v[Nmax],aux[Nmax];
void swap(int st, int mij, int dr) {
int i,j,t,k;
for(i=st; i<=dr; i++)
aux[i]=v[i];
i=st; j=mij+1; k=st;
while(i<=mij && j<=dr)
if(aux[i]>aux[j])
v[k++]=aux[j++];
else
v[k++]=aux[i++];
for(t=i; t<=mij; t++)
v[k++]=aux[t];
for(t=j; t<=dr; t++)
v[k++]=aux[t];
}
void mergesort(int st, int dr) {
int mij;
if(st==dr) return;
mij=(st+dr)/2;
mergesort(st,mij);
mergesort(mij+1,dr);
swap(st,mij,dr);
}
int main() {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int i,n;
scanf("%d",&n);
for(i=1; i<=n; i++)
scanf("%d",&v[i]);
mergesort(1,n);
for(i=1; i<=n; i++)
printf("%d ",v[i]);
return 0;
}