Pagini recente » Cod sursa (job #283923) | Istoria paginii runda/brasov_12_jr | Cod sursa (job #2109631) | Cod sursa (job #1355080) | Cod sursa (job #261392)
Cod sursa(job #261392)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_N 500010
long n;
long a[MAX_N];
void quick(long st, long dr)
{
long pivot = a[st + rand() % (dr - st + 1)];
long i = st, j = dr;
while (i <= j)
{
while (i <= dr && a[i] < pivot) ++i;
while (j >= st && a[j] > pivot) --j;
if (i <= j)
{
a[i] ^= a[j] ^= a[i] ^= a[j];
++i;
--j;
}
}
if (i < dr) quick(i, dr);
if (j > st) quick(st, j);
}
int main()
{
long i;
srand(time(0));
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%ld", &n);
for (i = 1; i <= n; ++i) scanf("%ld", &a[i]);
quick(1, n);
for (i = 1; i <= n; ++i) printf("%ld ", a[i]);
return 0;
}