Pagini recente » Cod sursa (job #88254) | Cod sursa (job #2152397) | Cod sursa (job #204661) | Cod sursa (job #2946773) | Cod sursa (job #790160)
Cod sursa(job #790160)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
std::ifstream f("algsort.in");
std::ofstream g("algsort.out");
std::vector<int> v;
void read()
{
int n, x;
f >> n;
for (int i = 0; i < n; i ++) {
f >> x;
v.push_back(x);
}
}
void write()
{
for (int i = 0; i < (int) v.size(); i ++) {
g << v[i] << ' ';
}
}
int partition(int first, int last)
{
int i, j;
int piv;
piv = (rand() % (last - first + 1)) + first;
std::swap(v[piv], v[first]);
i = j = first + 1;
while(j <= last) {
if (v[j] < v[first]) {
std::swap(v[i], v[j]);
i ++;
}
j ++;
}
std::swap(v[i - 1], v[first]);
return i - 1;
}
void quicksort(int first, int last)
{
if (first >= last) {
return;
}
int k = partition(first, last);
quicksort(first, k - 1);
quicksort(k + 1, last);
}
int main()
{
read();
quicksort(0, v.size() - 1);
write();
return 0;
}