Cod sursa(job #1588882)

Utilizator RadduFMI Dinu Radu Raddu Data 3 februarie 2016 18:05:50
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
 int n,b[500005],a[500005];
void Merge(int st,int dr)
{ int k=0,i,i1,i2,mid=(st+dr)/2;
    if (mid-st+1>1) Merge(st,mid);
    if (dr-mid>1) Merge(mid+1,dr);

    i1=st; i2=mid+1;
   while(i1<=mid && i2<=dr)
   { if (a[i1]<a[i2]) {k++; b[k]=a[i1]; i1++;}
      else {k++; b[k]=a[i2]; i2++;}
   }
  for(i=i1;i<=mid;i++) {k++; b[k]=a[i];}
  for(i=i2;i<=dr;i++)  {k++; b[k]=a[i];}

  for(i=st;i<=dr;i++)
   a[i]=b[i-st+1];
}
int main()
{ int i;
    f>>n;
    for(i=1;i<=n;i++)
     f>>a[i];

   Merge(1,n);

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