Cod sursa(job #287342)

Utilizator ktalyn93Catalin ktalyn93 Data 24 martie 2009 19:19:06
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
int n,l,v[500001],a[500001];
void mergesort(int x,int y)
{
     if(x>=y)
      return;
     int m,i,k,j;
     m=(x+y)/2;
     mergesort(x,m);
     mergesort(m+1,y);
     i=x;
     j=m+1;
     k=x-1;
      while(i<=m && j<=y)
      if(v[i]<=v[j])
       {
                   a[++k]=v[i];
                   i++;
       }
       else
       {
           a[++k]=v[j];
           j++;
           
       }
     if(i>m)
     while(j<=y) a[++k]=v[j++];
     else
     while(i<=m) a[++k]=v[i++];
     for(i=x;i<=y;i++)
      v[i]=a[i];
}
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for(l=1;l<=n;l++)
     scanf("%d",&v[l]);
    mergesort(1,n);
    for(l=1;l<=n;l++)
     printf("%d ",v[l]);
    return 0;
}