Pagini recente » Cod sursa (job #2044227) | Cod sursa (job #2597176) | Cod sursa (job #1563139) | Cod sursa (job #1129868) | Cod sursa (job #906409)
Cod sursa(job #906409)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int n, v[500000];
void swap(int *v, int a, int b)
{
int aux = v[a];
v[a] = v[b];
v[b] = aux;
}
int partition (int *v, int p, int r)
{
//int pivot = p + rand() % (r - p);
int pivot = p + (r - p) / 2;
int pivotValue = v[pivot];
swap(v, pivot, r);
int i = p;
int j;
for (j = p; j < r; j++)
{
if (v[j] <= pivotValue)
{
swap(v, i, j);
i++;
}
}
swap(v, i, r);
return i;
}
void quick(int *v, int p, int r)
{
if (p < r)
{
int q = partition(v, p, r);
quick(v, p, q - 1);
quick(v, q + 1, r);
}
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
srand(time(NULL));
int i;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &v[i]);
quick(v, 0, n - 1);
for (i = 0; i < n; i++)
printf("%d ", v[i]);
return 0;
}