Pagini recente » Cod sursa (job #91179) | Cod sursa (job #2235595) | Cod sursa (job #451506) | Cod sursa (job #572258) | Cod sursa (job #2890169)
#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] + v[dr]) / 2;
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;
}