Cod sursa(job #353296)

Utilizator MarquiseMarquise Marquise Data 4 octombrie 2009 16:46:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream.h>

#define NMAX 500002

int N, v[NMAX];


int partitie(int st, int dr)
{
    int i, j, aux, pivot;
    
    i = st - 1;
    j = dr + 1;
    pivot = v[(st + dr) / 2];
    while (1)
    {
          do { ++i; } while ( v[i] < pivot);
          do { --j; } while ( v[j] > pivot);
          if ( i < j)
          {
               aux = v[i];
               v[i] = v[j];
               v[j] = aux;
          }
          else
              return j;
    }
}

void sort(int st, int dr)
{
     int m;
     if ( st < dr)
     {
          m = partitie(st, dr);
          sort(st, m);
          sort(m + 1, dr);
     }             
}

int main()
{
    int i;
    
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    
    f >> N;
    for ( i = 1; i <= N; i++)
        f >> v[i];
        
   sort(1, N);
   
   for ( i = 1; i <= N; i++)
       g << v[i] << " ";
       
   g << "\n";
   return 0; 
}