Pagini recente » Cod sursa (job #901556) | Cod sursa (job #2186553) | Cod sursa (job #3003705) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #1019252)
#include <fstream>
#include <cstdlib>
using namespace std;
int v[500005];
int choosePivot(int st, int dr)
{
int i,j,piv;
i=st-1;
j=dr+1;
piv=v[rand()%(dr+st)];
while(true){
do
{
++i;
}while(v[i]<piv);
do
{
--j;
}while(v[j]>piv);
if(i<j)
{
int aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else
return j;
}
return 0;
}
void quicksort(int st,int dr)
{
if(st<dr)
{
int pivot=choosePivot(st,dr);
quicksort(st,pivot);
quicksort(pivot+1,dr);
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
quicksort(1,n);
for(int i=1;i<=n;i++)
g<<v[i]<<" ";
f.close();
g.close();
return 0;
}