Pagini recente » Cod sursa (job #2111933) | Cod sursa (job #2711384) | Cod sursa (job #1362035) | Cod sursa (job #3173955) | Cod sursa (job #940121)
Cod sursa(job #940121)
#include <fstream>
#include <vector>
using namespace std;
vector<int> a;
void quicksort(int l, int r)
{
if (l >= r) return;
int pivot = a[r];
int i(l), j(r-1), p(l), q(r-1);
while (true) {
while (a[i] < pivot) ++i;
while (a[j] > pivot && j > l) --j;
if (i >= j) break;
swap(a[i],a[j]);
if (a[i] == pivot) swap(a[p++],a[i]);
if (a[j] == pivot) swap(a[q--],a[j]);
}
swap(a[i],a[r]);
j = i;
for (int k = l; k < p; ++k) swap(a[k],a[--j]);
for (int k = r-1; k > q; ++k) swap(a[k],a[++i]);
quicksort(l,j-1);
quicksort(i+1,r);
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
a.resize(n);
for (int i = 0; i < n; ++i)
fin >> a[i];
quicksort(0,n-1);
for (int i = 0; i < n; ++i)
fout << a[i] << ' ';
return 0;
}