Pagini recente » Cod sursa (job #1729801) | Cod sursa (job #2982360) | Cod sursa (job #1555903) | Cod sursa (job #2125460) | Cod sursa (job #940771)
Cod sursa(job #940771)
#include <fstream>
#include <vector>
using namespace std;
vector<int> a;
void quicksort(int l, int r)
{
if (l >= r) return;
swap(a[(l+r)/2],a[r]);
int pivot = a[r];
int i(l-1), j(r), p(l), q(r-1);
while (true) {
while (a[++i] < pivot);
while (a[--j] > pivot && j >= l);
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;
}