Pagini recente » Cod sursa (job #2733159) | Cod sursa (job #2409977) | Cod sursa (job #2145813) | Cod sursa (job #2580893) | Cod sursa (job #1490576)
#include <cstdio>
#include <cstring>
#include <algorithm>
const int MAX_N = 500000;
int N;
int V[MAX_N];
void quicksort(int *begin, int *end) {
int n = end - begin;
if (n > 1) {
int pivot = rand() % n;
std::swap(begin[pivot], begin[n - 1]);
pivot = begin[n - 1];
int *i = begin;
for (int *it = begin; it < end - 1; ++it) {
if (*it <= begin[n - 1]) {
std::swap(*i, *it);
++i;
}
}
std::swap(*i, begin[n - 1]);
quicksort(begin, i);
quicksort(i + 1, end);
}
}
int main(void) {
int i;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
// citirea datelor
scanf("%d", &N);
for (i = 0; i < N; ++i) {
scanf("%d", &V[i]);
}
// calcularea solutiei
quicksort(V, V + N);
// afisarea solutiei
for (i = 0; i < N; ++i) {
printf("%d ", V[i]);
}
printf("\n");
return 0;
}