Cod sursa(job #756292)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 9 iunie 2012 14:15:36
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#define dim 500020
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");

int V[dim],H[dim],i,n,k;

void interclasare(int st, int mij, int dr){
	int xa=st,xb=mij+1;
	k=0;
	while(xa<=mij&&xb<=dr){
		if(V[xa]<V[xb])
			H[++k]=V[xa],xa++;
		else
			H[++k]=V[xb],xb++;
	}
	while(xa<=mij)
		H[++k]=V[xa],xa++;
	while(xb<=dr)
		H[++k]=V[xb],xb++;
	for(i=st;i<=dr;i++)
		V[i]=H[i-st+1];
}

void merge(int st, int dr){
	if(st!=dr){
		int mij=(st+dr)/2;
		merge(st,mij);
		merge(mij+1,dr);
		interclasare(st,mij,dr);
	}
}

int main(){
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&V[i]);
	merge(1,n);
	for(i=1;i<=n;i++)
		fprintf(g,"%d ",V[i]);
	return 0;
}