Cod sursa(job #1018626)

Utilizator PetreFlorinaFMI Petre Florina PetreFlorina Data 29 octombrie 2013 20:27:36
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.41 kb
#include <iostream>
#include <fstream>

using namespace std;

long v[500001];
long n;

void ordo ( int p, int u )
  {
    int aux;

      if ( v[p] > v[u] )
        {
            aux = v[p]; v[p] = v[u]; v[u] = aux;
        }

  }

void interclas(int p, int m, int u)
   {

    int k,i,j;
    long a[500001];

     k=0; i=p; j=m+1;

     while ((i <= m) && (j <= u))
         if (v[i] < v[j])
            {
              k++;
              a[k] = v[i];
              i++;
            }
         else
            {
              k++;
              a[k] = v[j];
              j++;
            }

        if (i <= m)
          for (j=i; j<=m; j++)
             {
              k++; a[k] = v[j];
             }
         else
       for (i=j;i<=u;i++)
          {
          k++;a[k]=v[i];
          }

        for (i=1;i<=k;i++)
          v[p+i-1] = a[i];
   }

   void merge(int p, int u)
    {
        int m;

    if ((u-p) <= 1) ordo(p,u);
       else
         {
           m=((p + u) / 2);
           merge(p, m);
           merge(m+1, u);
           interclas(p, m, u);
        }
    }

int main()
{  int i;

   ifstream f("algsort.in");
   ofstream g("algsort.out");

    f >> n;

     for (i=1;i<=n;i++)
        f >> v[i];

       merge(1,n);

       for (i=1;i<=n;i++)
        g << v[i] << " ";

      f.close();
     g.close();

      return 0;
}