Cod sursa(job #498033)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 3 noiembrie 2010 21:19:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#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;
}