Pagini recente » Cod sursa (job #1507963) | Cod sursa (job #126575) | Cod sursa (job #1881633) | Cod sursa (job #2482230) | Cod sursa (job #837995)
Cod sursa(job #837995)
#include <cstdio>
#include <iostream>
using namespace std;
const int MAXN = 500001;
int A[MAXN];
inline void swap(int i, int j)
{
int aux = A[i];
A[i] = A[j];
A[j] = aux;
}
int partition(int left, int right, int val)
{
int i = left - 1, j = right;
for (;;) {
while (A[++i] < val);
while (val < A[--j]) if (j == left) break;
if (i >= j) break;
swap(i, j);
}
return i;
}
void quicksort(int left, int right)
{
if (left >= right)
return;
int p = partition(left, right, A[right]);
swap(right, p);
quicksort(left, p - 1);
quicksort(p + 1, right);
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n;
cin >> n;
for (int i = 0; i < n; ++i)
cin >> A[i];
quicksort(0, n - 1);
for (int i = 0; i < n - 1; ++i)
cout << A[i] << " ";
cout << A[n - 1] << "\n";
return 0;
}