Pagini recente » Cod sursa (job #770845) | Cod sursa (job #564974) | Cod sursa (job #2046968) | Cod sursa (job #2982056) | Cod sursa (job #365053)
Cod sursa(job #365053)
#include <stdio.h>
#include <stdlib.h>
int N, v[500024];
inline void swap(int *x, int *y)
{
int aux = *x;
*x = *y;
*y = aux;
}
int partition(int *A, int l, int r)
{
int x = A[l], i = l, j;
for (j = l+1; j <= r; ++j)
if (A[j] < x)
swap(A+(++i), A+j);
swap(A+l, A+i);
return i;
}
void quicksort(int *A, int l, int r)
{
if (l >= r)
return ;
int p = l + rand() % (r-l+1);
swap(A+l, A+p);
int m = partition(A, l, r);
quicksort(A, l, m);
quicksort(A, m+1, r);
}
int main()
{
int i;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; ++i)
scanf("%d", &v[i]);
quicksort(v, 1, N);
for (i = 1; i <= N; ++i)
printf("%d ", v[i]);
printf("\n");
return 0;
}