Pagini recente » Rating hatz gion (hatzgion1) | Cod sursa (job #933665) | Istoria paginii runda/fminostress/clasament | Cod sursa (job #143148) | Cod sursa (job #2064451)
#include <iostream>
#include <cstdio>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
int n, i, j, nr, aux, v[500010];
int partition (int in, int sf)
{
int pos = in;
int ind = rand()%(sf-in+1)+in;
if (ind == sf) ind--;
if (ind == in) ind++;
aux = v[sf]; v[sf] = v[ind]; v[ind] = aux;
for (int i = in; i < sf; i++)
if (v[i] <= v[sf])
{
aux = v[pos]; v[pos] = v[i]; v[i] = aux;
pos++;
}
aux = v[pos]; v[pos] = v[sf]; v[sf] = aux;
return pos;
}
void quicksort (int in, int sf)
{
if (sf > in)
{
int ind = partition(in, sf);
if (ind-1 > in) quicksort (in, ind-1);
if (sf > ind+1) quicksort (ind+1, sf);
}
}
int main () {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &v[i]);
srand (unsigned (time(0)));
quicksort(1, n);
for (i = 1; i <= n; i++)
printf("%d ", v[i]);
}