Pagini recente » Cod sursa (job #3243373) | Cod sursa (job #3201581) | Cod sursa (job #1044904) | Cod sursa (job #2940047) | Cod sursa (job #2897693)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500001], n;
void qsort(int st,int dr)
{
if(st >= dr)
{
return;
}
int pivot = v[(st + dr) / 2];
int mic = 0;
int mare = 0;
for(int i = st; i <= dr; ++i)
if(v[i] < pivot)
mic++;
else if(v[i] > pivot)
mare++;
int ma = dr;
for(int i = st; i <= st + mic - 1; ++i)
while(v[i] >= pivot)
{
swap(v[i], v[ma]);
ma--;
}
ma = dr;
for(int i = st + mic; i <= dr - mare; ++i)
while(v[i] != pivot)
{
swap(v[i], v[ma]);
ma--;
}
qsort(st, st + mic - 1);
qsort(dr - mare + 1,dr);
}
int main()
{
f >> n;
for(int i = 1; i <= n; ++i)
f >> v[i];
qsort(1, n);
for(int i = 1; i <= n; ++i)
g << v[i] << " ";
return 0;
}