Pagini recente » Cod sursa (job #611221) | Cod sursa (job #180643) | Cod sursa (job #1221397) | Cod sursa (job #1765723) | Cod sursa (job #1807929)
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#define in "algsort.in"
#define out "algsort.out"
#define NMAX (500000 + 7)
#define RANDVAL 163
using namespace std;
int n, v[NMAX], aux[NMAX], ct;
void qSort(const int &st, const int &dr)
{
if(st >= dr) return ;
int pivot = rand()%(dr-st+1) + st;
ct = st-1;
for(int i = st; i<= dr; ++i)
{
if(i == pivot) continue;
if(v[i] <= v[pivot]) aux[++ct] = v[i];
}
aux[++ct] = v[pivot];
pivot = ct;
for(int i = st; i<= dr; ++i)
{
if(v[i] > aux[pivot]) aux[++ct] = v[i];
}
for(int i = st; i<= dr; ++i) v[i] = aux[i];
qSort(st, pivot-1);
qSort(pivot+1, dr);
}
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
srand(RANDVAL);
scanf("%d", &n);
for(int i = 1; i<= n; ++i) scanf("%d", &v[i]);
qSort(1, n);
for(int i = 1; i<= n; ++i) printf("%d ", v[i]);
printf("\n");
return 0;
}