Pagini recente » Cod sursa (job #2847666) | Cod sursa (job #2615818) | Cod sursa (job #130767) | Cod sursa (job #577231) | Cod sursa (job #484154)
Cod sursa(job #484154)
#include<stdio.h>
#define Nmax 500001
int n, A[Nmax];
void swap(int st, int mij, int dr) {
int B[Nmax], i, j, k, t;
i=st; j=mij+1; k=st;
while(i<=mij && j<=dr)
if(A[i]<A[j])
B[k++]=A[i++];
else
B[k++]=A[j++];
if(i<=mij)
for(t=i; t<=mij; t++)
B[k++]=A[t];
else
for(t=j; t<=dr; t++)
B[k++]=A[t];
for(t=st; t<=dr; t++)
A[t]=B[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",&A[i]);
mergesort(1,n);
for(i=1; i<=n; i++)
printf("%d ",A[i]);
return 0;
}