Cod sursa(job #1414973)

Utilizator mihaib9Tabacu Mihai mihaib9 Data 3 aprilie 2015 13:48:09
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[500005],c[500005],n;
void interclasare(int a[],int sta,int dra,int b[],int stb,int drb, int c[])
 {
   int k=-1,i=sta,j=stb;

   while(i<=dra&&j<=drb)
   {
       if(a[i]<b[j])
        {
           k++;
           c[k]=a[i];
           i++;
        }
        else
        {
          k++;
          c[k]=b[j];
          j++;
        }
     }
      while(i<=dra)
      {
          k++;
          c[k]=a[i];
          i++;
      }

      while(j<=drb)
      {
          k++;
          c[k]=b[j];
          j++;
      }



 }

 void mergesort(int a[],int st,int dr)
   {
       if(st>=dr)
          return;
        int mij=(st+dr)/2;
        mergesort(a,st,mij);
        mergesort(a,mij+1,dr);
        interclasare(a,st,mij,a,mij+1,dr,c);
        int i,j=st;
        for(i=0;i<dr-st+1;i++)
        {
           a[j]=c[i];
           j++;
        }
   }

int main()
{
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
     int i;
     cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];

mergesort(a,1,n);

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