Pagini recente » Cod sursa (job #1240682) | Cod sursa (job #1553311) | Cod sursa (job #1865495) | Cod sursa (job #1711788) | Cod sursa (job #590439)
Cod sursa(job #590439)
#include<cstdio>
#include<cstdlib>
using namespace std;
#define INPUT "algsort.in"
#define OUTPUT "algsort.out"
#define NMAX (1 << 19)
int A[NMAX], n;
void swap(int &a, int &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
void qsort(int l, int r)
{
if(l >= r)
return;
int v = A[l], i = l, j = r;
swap(A[l], A[l + rand() % (r - l) + 1]);
while(i < j)
{
while(i < j && A[j] >= v)
--j;
A[i] = A[j];
while(i < j && A[i] <= v)
++i;
A[j] = A[i];
}
A[i] = v;
qsort(l, i - 1);
qsort(i + 1, r);
}
int main()
{
freopen(INPUT, "r", stdin);
freopen(OUTPUT, "w", stdout);
scanf("%d", &n);
for(int i = 0; i < n; ++i)
scanf("%d", A + i);
qsort(0, n - 1);
for(int i = 0; i < n; ++i)
printf("%d ", A[i]);
return 0;
}