Pagini recente » Cod sursa (job #532828) | Cod sursa (job #62003) | Cod sursa (job #531366) | Cod sursa (job #2561467) | Cod sursa (job #2890167)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500005];
void quicksort(int st, int dr)
{
if(st >= dr)
return;
int pivot = v[st];
int poz1 = st;
int poz2 = dr;
while(poz1 <= poz2)
{
while(v[poz1] < pivot)
poz1++; /// elementul din stanga va fi >= pivot
while(v[poz2] > pivot)
poz2--; /// elementul din dreapta este < pivot
if(poz1 <= poz2)
{
swap(v[poz1], v[poz2]);
poz1++;
poz2--;
}
}
//cout << poz1 << " " << poz2 << "\n\n\n";
quicksort(st, poz2);
quicksort(poz1, dr);
}
int main()
{
int n;
in >> n;
for(int i = 1; i <= n; i++)
in >> v[i];
quicksort(1, n);
for(int i = 1; i <= n; i++)
out << v[i] << " ";
out << "\n";
return 0;
}