Pagini recente » Cod sursa (job #2110507) | Cod sursa (job #1625010) | Cod sursa (job #1847822) | Cod sursa (job #2911064) | Cod sursa (job #632080)
Cod sursa(job #632080)
#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;
}