Pagini recente » Cod sursa (job #1818132) | Cod sursa (job #1432483) | Cod sursa (job #797988) | Cod sursa (job #112059) | Cod sursa (job #1260240)
#include <stdio.h>
#include <stdlib.h>
int v[500001];
void swap(int a, int b)
{
int tmp;
tmp = v[a];
v[a] = v[b];
v[b] = tmp;
}
int partition(int left, int right)
{
int i = left - 1, j;
int pivot = right;
for (j = left; j < right; j++) {
if (v[j] <= v[pivot]) {
i = i + 1;
swap(j, i);
}
}
swap(i + 1, pivot);
return (i + 1);
}
void quicksort(int left, int right)
{
if (left < right) {
int no = left + rand() % (right - left);
swap(no, right);
int q = partition(left, right);
quicksort(left, q - 1);
quicksort(q + 1, right);
}
}
int main()
{
int n, i;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for (i = 0; i < n; i++) scanf("%d", &v[i]);
srand(time(NULL));
quicksort(0, n - 1);
for (i = 0; i < n; i++) printf("%d ", v[i]);
printf("\n");
return 0;
}