Cod sursa(job #632080)

Utilizator StefanLacheStefan Lache StefanLache Data 10 noiembrie 2011 11:58:43
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
void MERGE(int A[100],int p,int q,int r)
{
	int n1,n2,L[100],R[100],i,j,k;
	n1=q-p+1;
	n2=r-q;
	for(i=1;i<=n1;i++)
		L[i]=A[p+i-1];
	for(j=1;j<=n2;j++)
		R[j]=A[q+j];
	L[n1+1]=32000;
	R[n2+1]=32000;
	i=j=1;
	for(k=p;k<=r;k++)
		if(L[i]<R[j])
			{A[k]=L[i];i++;}
			else {A[k]=R[j];j++;}
}
void MERGESORT(int A[100],int p,int r)
{   
	int q;
	if(p<r)
	 { q=(p+r)/2;
	  MERGESORT(A,p,q);
	  MERGESORT(A,q+1,r);
	  MERGE(A,p,q,r);
	 }
}
int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	int A[100],n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&A[i]);
	MERGESORT(A,1,n);
	for(int i=1;i<=n;i++)
		printf("%d ",A[i]);
	return 0;
}