Cod sursa(job #2052129)

Utilizator AnduRazvanMindrescu Andu AnduRazvan Data 30 octombrie 2017 00:39:08
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,a[500001],b[500001];
void Merge(int st,int m,int dr)
{  int i=st;
   int j=m+1;
   int z=0;
   while(i<=m&&j<=dr)
   { if(a[i]<a[j])
       { z++;
         b[z]=a[i];
         i++;
       }
     else
       { z++;
         b[z]=a[j];
         j++;
       }
   }
    if(i<=m)
     { while(i<=m)
         { z++;b[z]=a[i];i++;  }
     }
    if(j<=dr)
     { while(j<=dr)
         { z++;b[z]=a[j];j++;  }
     }
     for(i=1;i<=z;i++)
     a[st+i-1]=b[i];
}
void MergeSort(int x,int y)
{ if(x<y)
   { int mij=(x+y)/2;
       MergeSort(x,mij);
       MergeSort(mij+1,y);
       Merge(x,mij,y);
   }
}

int main()
{ fin>>n;
  int i;
    for(i=1;i<=n;i++)
    fin>>a[i];
    MergeSort(1,n);
    for(i=1;i<=n;i++)
     fout<<a[i]<<" ";
    return 0;
}