Cod sursa(job #384723)

Utilizator wscsprint3rIrimescu Stefan wscsprint3r Data 20 ianuarie 2010 20:17:20
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
//
#include<stdio.h>
FILE *f=fopen("algsort.in","r"),*g=fopen("algsort.out","w");
int v[50],c[50],n;
void inter(int ls, int mj, int ld)
{int i,j,k,x;
	i=ls;
	j=mj+1;
	k=0;
	
	while(i<=mj&&j<=ld)
		if(v[i]<v[j])
			c[++k]=v[i++];
		else
			c[++k]=v[j++];
		
		
	if(i<=mj)
		for(x=i;x<=mj;x++)
			c[++k]=v[x];
		
	if(j<=ld)
		for(x=j;x<=ld;x++)
			c[++k]=v[x];
		
		j=1;
		for(i=ls;i<=ld;i++)
			v[i]=c[j++];
		
}
		
	


void ms(int ls,int ld)
{
	int aux,mj;
	if(ld-ls<=1)
	{
		if(v[ls]>v[ld])
		{
			aux=v[ls];
			v[ls]=v[ld];
			v[ld]=aux;
		}
	}
		else
		{
			mj=(ls+ld)/2;
			ms(ls,mj);
			ms(mj+1,ld);
			inter(ls,mj,ld);
		}
	
}
			

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