Pagini recente » Cod sursa (job #2107398) | Cod sursa (job #2711202) | Cod sursa (job #1436863) | Cod sursa (job #982305) | Cod sursa (job #2973982)
#include <bits/stdc++.h>
using namespace std;
size_t partition(vector<int>& v, size_t left, size_t right) {
if (left == right || right == 0)
return left;
size_t index = left;
const int pivot = v[right - 1];
for (size_t i = left; i + 1 < right; ++i)
if (v[i] <= pivot)
swap(v[index++], v[i]);
swap(v[index++], v[right - 1]);
return index;
}
void quicksort(vector<int>& v, size_t left, size_t right) {
if (left == right || right == 0)
return;
const size_t index = partition(v, left, right);
if (index != 0)
quicksort(v, left, index - 1);
if (index != right)
quicksort(v, index, right);
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
vector<int> v(n);
for (int &x : v)
fin >> x;
shuffle (v.begin(), v.end(), std::default_random_engine(
chrono::system_clock::now().time_since_epoch().count()
));
shuffle(v.begin(), v.end(), default_random_engine(69));
quicksort(v, 0UL, v.size());
for (int &x : v)
fout << x << ' ';
fout << '\n';
}