Pagini recente » Cod sursa (job #816660) | Cod sursa (job #407965) | Cod sursa (job #1234053) | Cod sursa (job #407921) | Cod sursa (job #938315)
Cod sursa(job #938315)
#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;
}