Pagini recente » Cod sursa (job #2296685) | Cod sursa (job #3207137) | Cod sursa (job #2104114) | Cod sursa (job #2447233) | Cod sursa (job #3351167)
#include <iostream>
#include <queue>
#include <fstream>
#include <map>
#include <cstring>
#include <stack>
#include <ctime>
#include <cstdlib>
#define N_MAX 500005
#define MOD 666013
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;
int a[N_MAX];
int partition(int l, int r) {
int part_ind = l + rand() % (r - l + 1);
int pivot = a[part_ind];
int i = l - 1;
for (int j = l; j <= r; ++j) {
if (a[j] < pivot) {
swap(a[j], a[++i]);
if (i == part_ind)part_ind = j;
}
}
swap(a[++i], a[part_ind]);
return i;
}
void quick_sort(int l, int r) {
if (l >= r)return;
int index = partition(l, r);
quick_sort(l, index - 1);
quick_sort(index + 1, r);
}
int main()
{
srand(time(0));
in >> n;
for (int i = 0; i < n; i++) {
in >> a[i];
}
quick_sort(0, n - 1);
for (int i = 0; i < n; i++) {
out << a[i] << ' ';
}
return 0;
}