Pagini recente » Cod sursa (job #1379161) | Cod sursa (job #2886109) | Cod sursa (job #79942) | Cod sursa (job #1019459) | Cod sursa (job #2618631)
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <queue>
#include <cstdlib>
#include <ctime>
using namespace std;
const int NMAX = 500505;
int N, A[NMAX];
void sortArray(int A[], int from, int to) {
if (to - from <= 0) {
return;
}
int pivot = A[from + rand() % (to - from + 1)];
// no constant space
int i = from, j = to;
while (true) {
while (i < j && A[i] < pivot) {
i++;
}
while (j > i && A[j] > pivot) {
j--;
}
if (i >= j) {
break;
}
swap(A[i], A[j]);
i++; j--;
}
sortArray(A, from, j);
sortArray(A, j + 1, to);
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
srand(time(0));
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> N;
for (int idx = 1; idx <= N; idx++) {
cin >> A[idx];
}
sortArray(A, 1, N);
for (int idx = 1; idx <= N; idx++) {
if (idx > 1) {
cout << " ";
}
cout << A[idx];
}
cout << "\n";
return 0;
}