Cod sursa(job #938314)

Utilizator ucc_5Usurelu Catalin ucc_5 Data 12 aprilie 2013 12:32:49
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#define Max 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
 
int n,v[Max];
 
void citire ()
{
  f>>n;
  for (int i=1; i<=n; i++)
    f>>v[i];
  f.close ();
}
 
void quicksort (int v[], int stanga, int dreapta)
{ int i = stanga, j = dreapta, aux;
  int pivot = v[(stanga + dreapta) /2 ];
  while (1)                            
    { while (v[i] < pivot)
           i++;

           

      while (v[j] > pivot)
           j--;


     if (i<j)                             
       {   aux=v[i];                       
           v[i]=v[j];
           v[j]=aux;
           i++;
           j--;
       }
else 
break;
     }
     
     
    
     pivot  = i;
     
     //g<<"Pivot: " << v[pivot] << std::endl;
     
  //   for (int i=stanga; i<=dreapta; i++)
	//	g<<v[i]<<" ";
	//	g<<std::endl;
   //  
     if (stanga < pivot - 1) 
          quicksort (v, stanga, pivot-1);
     if (pivot + 1 < dreapta) 
          quicksort (v,pivot+1, dreapta);
}
 
void afisare ()
{
  for (int i=1; i<=n; i++)
    g<<v[i]<<" ";
  g.close ();
}
 
int main ()
{
  citire ();
  quicksort (v,1,n);
  afisare ();
  return 0;
}