Pagini recente » Cod sursa (job #1357597) | Cod sursa (job #495218) | Cod sursa (job #2671429) | Cod sursa (job #573037) | Cod sursa (job #1815790)
#include <bits/stdc++.h>
#include <time.h>
#define DIMMAX 500005
using namespace std;
long vect[DIMMAX];
long N;
vector <long> p;
void QUICKSORT(long inf, long sup)
{
long x, i, j, t;
i = inf;
j = sup;
p.push_back(rand()%(sup-inf)+inf);
p.push_back(rand()%(sup-inf)+inf);
p.push_back(rand()%(sup-inf)+inf);
sort(p.begin(),p.begin()+3);
long pivot=p[1];
x=vect[pivot];
do
{
while ( (i < sup) && (vect[i] < x) ) i++;
while ( (j > inf) && (vect[j] > x) ) j--;
if ( i<= j )
{
t = vect[i];
vect[i] = vect[j];
vect[j] = t;
i++;
j--;
}
} while ( i <= j );
if ( inf < j ) QUICKSORT(inf, j);
if ( i < sup ) QUICKSORT(i, sup);
}
void citire()
{
ifstream f("algsort.in");
f>>N;
for(long i=0; i<N; i++)
f>>vect[i];
f.close();
}
void afisare()
{
ofstream g("algsort.out");
for(long i=0; i<N; i++)
g<<vect[i]<<" ";
g.close();
}
int main()
{
citire();
QUICKSORT(0,N-1);
afisare();
return 0;
}