Pagini recente » Cod sursa (job #1092813) | Cod sursa (job #2468739) | Cod sursa (job #1951474) | Cod sursa (job #910602) | Cod sursa (job #1513163)
/* QuickSort */
#include <stdio.h>
#include <assert.h>
#include <string.h>
#define MAXN 500002
int N, A[MAXN];
void qsort(int l, int r)
{
if (l >= r) return;
int pivot = A[l + rand() % (r - l)],
i = l, j = r, aux;
do
{
while(A[i] < pivot) ++i;
while(A[j] > pivot) --j;
if (i <= j)
{
aux = A[i];
A[i] = A[j];
A[j] = aux;
++i, --j;
}
} while(i < j);
qsort(l, j);
qsort(i, r);
}
int main()
{
assert(freopen("algsort.in", "r", stdin));
freopen("algsort.out", "w", stdout);
scanf("%d", &N);
int i;
for (i = 0; i < N; ++i) scanf("%d", &A[i]);
qsort(0, N - 1);
for (i = 0; i < N; ++i) printf("%d ", A[i]);
return 0;
}