Pagini recente » Cod sursa (job #2818123) | Cod sursa (job #3173062) | Cod sursa (job #846791) | Cod sursa (job #3166404) | Cod sursa (job #1313971)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int N,i,j;
long v[500005];
int poz(int st,int dr)
{
int piv;
piv=v[st+rand()%(dr-st+1)];
while(st<=dr)
{
while (v[st] < piv)
++ st;
while (v[dr] > piv)
-- dr;
if (st <= dr)
{
swap(v[st], v[dr]);
++ st, -- dr;
}
}
return st ;
}
void quick(int st,int dr)
{
if(st<dr)
{
int k=poz(st,dr);
quick(st,k-1);
quick(k + 1,dr);
}
}
int main()
{
f>>N;
for(i=1;i<=N;i++)
f>>v[i];
quick(1,N);
for(i=1;i<=N;i++)
g<<v[i]<<" ";
f.close(); g.close();
return 0;
}