Cod sursa(job #799389)

Utilizator SovStoStoicescu Mihail Cristian SovSto Data 18 octombrie 2012 20:52:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <iostream>
using namespace std;
    ifstream f("algsort.in");
    ofstream g("algsort.out");
int a[500005],n;


void interclas(int lo,int mid,int hi)
{
     int b[500005];
     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];k++;y++;}
                      
     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()
{
    f>>n;
    int i;

    for(i=1;i<=n;i++)
		f>>a[i];
	merge(1,n);
    for(i=1;i<=n;i++)
    g<<a[i]<<" ";
	return 0;
  
}