Pagini recente » Cod sursa (job #3172056) | Istoria paginii utilizator/pufosenie | Cod sursa (job #2228746) | Cod sursa (job #2440645) | Cod sursa (job #261384)
Cod sursa(job #261384)
#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("quicksort.in", "r", stdin);
freopen("quicksort.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;
}