Pagini recente » Cod sursa (job #3182372) | Cod sursa (job #466834) | Cod sursa (job #1163202) | Cod sursa (job #602317) | Cod sursa (job #1727947)
#include <cstdio>
#define NMax 500005
int v[NMax];
void interclasare( int p,int m,int q )
{
int b[NMax],k=0,i,j;
for( i = p, j = m + 1; i <= m && j <= q; )
if( v[i] <= v[j] ) b[k++] = v[i++];
else b[k++] = v[j++];
while( i <= m ) b[k++] = v[i++];
while( j <= q ) b[k++] = v[j++];
for( i = p; i <= q; ++i ) v[i] = b[i-p];
}
void MSort(int p,int q)
{
if( q > p )
{
int m = (p+q)/2;
MSort( p, m );
MSort( m+1, q );
interclasare(p,m,q);
}
}
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]);
MSort( 1, n );
for( i = 1; i <= n; ++i ) printf("%d ",v[i]);
return 0;
}