Pagini recente » Cod sursa (job #1803986) | Cod sursa (job #1348932) | Cod sursa (job #2328427) | Cod sursa (job #1006207) | Cod sursa (job #842142)
Cod sursa(job #842142)
#include <stdio.h>
#include <string.h>
#define MAXN 500001
int N;
int v[MAXN];
int temp[MAXN];
void mergesort(int st, int dr)
{
if( st == dr )
return;
int mid = (st+dr)/2;
mergesort(st,mid);
mergesort(mid+1,dr);
int i=st;
int j=mid+1;
int k=st;
for(k=st;k<=dr;k++){
if( j > dr || v[i] < v[j] ){
temp[k] = v[i];
i++;
}
else{
temp[k] = v[j];
j++;
}
}
memcpy(&v[st],&temp[st],(dr-st+1)*sizeof(int));
}
int main(int argc, char* argv[])
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&N);
int i=0;
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;
}