Pagini recente » Cod sursa (job #1493077) | Cod sursa (job #1191932) | Cod sursa (job #498033)
Cod sursa(job #498033)
#include<stdio.h>
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
int A[500100],i,N,B[500100];
void mergesort ( int p, int u ){
int i,j,k = 0;
if ( p < u ){
int m = p + ( u - p ) / 2;
mergesort(p,m);
mergesort(m + 1,u);
for ( i = p, j = m + 1 ; i <= m && j <= u ; ){
if ( A[i] < A[j] )
B[++k] = A[ i++ ] ;
else
B[++k] = A[ j++ ] ;
}
while ( i <= m )
B[++k] = A[i++];
while ( j <= u )
B[++k] = A[j++];
for ( i = p ; i <= u ; ++i )
A[i] = B[ i - p + 1 ];
}
}
int main () {
fscanf(f,"%d",&N);
for ( i = 1 ; i <= N ; ++i )
fscanf(f,"%d",&A[i]);
mergesort(1,N);
for ( i = 1 ; i <= N ; ++i )
fprintf(g,"%d ",A[i]);
fclose(f);
fclose(g);
return 0;
}