Pagini recente » Cod sursa (job #1703715) | Cod sursa (job #3274824) | Cod sursa (job #2578962) | Cod sursa (job #3004875) | Cod sursa (job #476113)
Cod sursa(job #476113)
#include <cstdio>
#include <algorithm>
using namespace std;
#define NMAX 500050
int V[NMAX], n;
void read ();
void quicksort (int[], int, int);
int partition (int[], int, int);
void print_sol ();
int main () {
freopen ("algsort.in", "r", stdin);
freopen ("algsort.out", "w", stdout);
read ();
quicksort (V, 1, n);
print_sol ();
return 0;
}
void read () {
int i;
scanf ("%d", &n);
for (i = 1; i <= n; i++)
scanf ("%d", &V[i]);
}
void quicksort (int V[], int p, int u) {
int pivot;
if (p < u) {
pivot = partition (V, p, u);
quicksort (V, p, pivot - 1);
quicksort (V, pivot + 1, u);
}
}
int partition (int V[], int p, int u) {
int x, i, j;
x = V[u];
i = p - 1;
for (j = p; j < u; j++)
if (V[j] <= x) {
i++;
swap (V[i], V[j]);
}
swap (V[i+1], V[u]);
return i + 1;
}
void print_sol () {
int i;
for (i = 1; i <= n; i++)
printf ("%d ", V[i]);
}