Cod sursa(job #1011803)

Utilizator bersekerHoinaru Mihai berseker Data 17 octombrie 2013 15:34:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace std;
unsigned  v[500000],c[500000];
void intercls(unsigned *v, unsigned i_s, unsigned f_s, unsigned i_d, unsigned f_d)
{unsigned i=1,j,s_s=i_s;
    while(i_s<=f_s && i_d <= f_d)
        if(v[i_s]<v[i_d]) c[i++]=v[i_s++];
        else c[i++]=v[i_d++];
    while(i_s<=f_s) c[i++]=v[i_s++];
    while(i_d <= f_d) c[i++]=v[i_d++];
    for(i=s_s,j=1;i<=f_d;i++,j++) v[i]=c[j];
}
 
void merge_sort(unsigned *v,unsigned s, unsigned d)
{
    if(s==d) return;
    unsigned mij=(s+d)/2;
    merge_sort(v,s,mij);
    merge_sort(v,mij+1,d);
    intercls(v,s,mij,mij+1,d);
}
int main()
{unsigned n;
 ifstream f("algsort.in"); f>>n;
 for(unsigned i=1;i<=n;i++) f>>v[i];
  f.close();
 
 merge_sort(v,1,n);
 
ofstream g("algsort.out");
for(unsigned i=1;i<=n;i++)
    g<<v[i]<<" ";
g.close();
return 0;}