Cod sursa(job #361395)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 4 noiembrie 2009 21:27:37
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>

int v[100],aux[100];

void inter(int l,int mid,int r)
{
 int i=l,j=mid+1,x=0;
 do
 {
  ++x;
  if (((v[i]<v[j])&&(i<mid+1))||(j>r))
   {
    aux[x]=v[i];
    ++i;
   }
  else
   {
    aux[x]=v[j];
    ++j;
   }
 }
 while (x<r-l+1);
 for (i=l;i<r+1;i++) v[i]=aux[i-l+1];
}

void merge(int l,int r)
{
 if (l==r) return;
 int mid=((l+r)/2);
 merge(l,mid);
 merge(mid+1,r);
 inter(l,mid,r);
}

int main()
{
 int i,n;
 freopen("algsort.in","r",stdin);
 freopen("algsort.out","w",stdout);
 scanf("%d",&n);
 for (i=1;i<n+1;i++) scanf("%d",&v[i]);
 merge(1,n);
 for (i=1;i<n+1;i++) printf("%d%c",v[i],' ');
 return 0;
}