Pagini recente » Cod sursa (job #559055) | Cod sursa (job #461976) | Cod sursa (job #2459237) | Cod sursa (job #824623) | Cod sursa (job #2618776)
#include <iostream>
#include <vector>
#include <fstream>
int Partition(std::vector<long long>& v, int st, int dr)
{
long long pivot = v[dr], t;
int i = st, j = dr;
while (i != j)
{
if (pivot == v[j])
{
if (v[i] > pivot)
{
t = v[i];
v[i] = v[j];
v[j] = t;
j--;
}
else
i++;
}
else
if (v[j] < pivot)
{
t = v[i];
v[i] = v[j];
v[j] = t;
i++;
}
else
j--;
}
return i;
}
void QuickSort(std::vector<long long>& v, int st, int dr)
{
if (st < dr)
{
int pi = Partition(v, st, dr);
QuickSort(v, st, pi - 1);
QuickSort(v, pi + 1, dr);
}
}
int main()
{
int n, x;
std::vector<long long> sir;
std::ifstream in("algsort.in");
std::ofstream out("algsort.out");
in >> n;
for (int i = 0; i < n; i++) {
in >> x;
sir.push_back(x);
}
QuickSort(sir, 0, n-1);
for (int i = 0; i < n; i++) {
out << sir[i]<<" ";
}
}