Pagini recente » Cod sursa (job #665081) | Cod sursa (job #1359421) | Cod sursa (job #744275) | Cod sursa (job #1374424) | Cod sursa (job #283013)
Cod sursa(job #283013)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#define N 500010
#define FIN "algsort.in"
#define FOUT "algsort.out"
using namespace std;
int n, v[N];
void read()
{
freopen(FIN, "r", stdin);
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &v[i]);
}
void quicksort(int x, int y)
{
if (x >= y)
return;
int i = x - 1, j, p;
p = rand() % (y - x + 1) + x;
swap(v[p], v[y]);
for (j = x; j <= y; ++j)
if (v[j] <= v[y])
{
swap(v[++i], v[j]);
}
quicksort(x, i - 1);
quicksort(i + 1, y);
}
void write()
{
freopen(FOUT, "w", stdout);
for (int i = 1; i < n; ++i)
printf("%d ", v[i]);
printf("%d\n", v[n]);
}
int main()
{
srand(time(0));
read();
quicksort(1, n);
write();
}