Cod sursa(job #799376)

Utilizator SovStoStoicescu Mihail Cristian SovSto Data 18 octombrie 2012 20:30:13
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <cstdio>
using namespace std;

int a[100],n;


void interclas(int lo,int mid,int hi)
{
     int b[100];
     int x=lo;
     int y=mid+1;
     int k=1;
     while(x<=mid && y<=hi)
                  if(a[x]<a[y]){b[k]=a[x];k++;x++;}
                  else {b[k]=a[y];k++;y++;}
     while(x<=mid)
                  {
                       b[k]=a[x];
                       x++;
                       k++;
                  }
     while(y<=hi)
                 {
                       b[k]=a[y];
                       y++;
                       k++;
                 }
     int t=lo;
     for(k=1;k<=(hi-lo)+1;k++)
                              {a[t]=b[k];
                              t++;}
}
                 
                               

void merge(int lo,int hi)
{
     if(lo<hi){
     int mid=lo+(hi-lo)/2;
     merge(lo,mid);
     merge(mid+1,hi);
     interclas(lo,mid,hi);}
}

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