Pagini recente » Cod sursa (job #2920294) | Cod sursa (job #3216166) | Cod sursa (job #2884158) | Cod sursa (job #790592) | Cod sursa (job #1065889)
# include <stdio.h>
# define InFile "algsort.in"
# define OutFile "algsort.out"
# define NMax 500000
int a[NMax],b[NMax],n;
void Citire()
{
int i;
scanf("%d",&n);
for( i = 0 ; i < n ; ++i )
scanf("%d",a+i);
}
void Afisare()
{
int i;
for( i = 0 ; i < n ; ++i )
printf("%d ",a[i]);
}
void Interclasare( int p , int m , int q )
{
int i = p , j = m+1 , k = 0;
while( i <= m && j <= q )
if( a[i] < a[j] )
b[k++] = a[i++];
else
b[k++] = a[j++];
while( i <= m ) b[k++] = a[i++];
while( j <= q ) b[k++] = a[j++];
for( i = p ; i <= q ; ++i ) a[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(InFile,"r",stdin);
freopen(OutFile,"w",stdout);
Citire();
MSort(0,n-1);
Afisare();
return 0;
}