Pagini recente » Cod sursa (job #711865) | Cod sursa (job #1421534)
# include <stdio.h>
# define InFile "algsort.in"
# define OutFile "algsort.out"
# define dim 500000
int a[dim],b[dim],N;
void interclasare( int i, int j, int k )
{
/* a[i],a[i+1],..,a[k]
a[k+1],..,a[j] */
int i1,j1,t;
i1 = i;
j1 = k+1;
t = 0;
while( i1 <= k && j1 <= j )
{
if( a[i1] <= a[j1] )
b[t] = a[i1++];
else
b[t] = a[j1++];
++t;
}
for( ; i1 <= k ; ++i1 )
b[t++] = a[i1];
for( ; j1 <= j ; ++j1 )
b[t++] = a[j1];
for( i1 = 0 ; i1 < t ; ++i1 )
a[i+i1] = b[i1];
}
void ordonare(int i, int j)
{
int aux;
if( j != i )
{
if( j-i == 1)
{
if(a[i] > a[j] )
{
aux = a[i];
a[i] = a[j];
a[j] = aux;
}
}
else
{
ordonare(i, (i+j)/2 );
ordonare( (i+j)/2+1 ,j);
interclasare(i,j, (i+j)/2);
}
}
}
int main()
{
freopen(InFile,"r",stdin);
freopen(OutFile,"w",stdout);
int i;
scanf("%d",&N);
for( i = 0 ; i < N ; ++i )
scanf("%d",a+i);
ordonare(0,N-1);
for( i = 0 ; i < N ; ++i )
printf("%d ",a[i]);
return 0;
}