Cod sursa(job #799383)

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

int a[100000],n;


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

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("algsort.in","r",stdin);
    freopen("algsort.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;
  
}