Pagini recente » Cod sursa (job #2518765) | Cod sursa (job #2547268) | Cod sursa (job #1711363) | Cod sursa (job #619399) | Cod sursa (job #842164)
Cod sursa(job #842164)
#include <stdio.h>
#include <string.h>
#define MAXN 500001
int N;
int v[MAXN];
int temp[MAXN];
void print()
{
int i;
for(i=1;i<=N;i++)
printf("%d ",v[i]);
printf("\n");
}
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;
for(k=st;k<=dr;k++){
if( i <= mid && ( 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);
print();
return 0;
}