Cod sursa(job #645819)

Utilizator Anna_cristinaButucea Ana Cristina Anna_cristina Data 10 decembrie 2011 16:06:18
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
using namespace std;

int v[500001],t[500001];

void interclasare(int st,int m,int dr)
{int i=st,x=st,y=m+1,nr=0;
 while(x<=m && y<=dr)
   if(v[x]<v[y])    t[++nr]=v[x++];
       else         t[++nr]=v[y++];
 while(x<=m)
   t[++nr]=v[x++];
 while(y<=dr)
   t[++nr]=v[y++];
 for(int j=1;j<=(dr-st+1);j++)
   v[i++]=t[j];
}

void merge(int st,int dr)    
{if(st<dr) 
   {int mijl=(st+dr)/2;
    merge(st,mijl);
    merge(mijl+1,dr);
    interclasare(st,mijl,dr);
    }
}    
                 
int main()
{int n,i;
 ifstream f("algsort.in");
 f>>n;
 for(i=1;i<=n;i++)
   f>>v[i];
 f.close();
 merge(1,n);
 ofstream g("algsort.out");
 for(i=1;i<=n;i++)
   g<<t[i]<<" ";  
 g.close();
 return 0; 
}