Pagini recente » Cod sursa (job #2180259) | Cod sursa (job #1666301) | Cod sursa (job #698510) | Borderou de evaluare (job #156987) | Cod sursa (job #2080937)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N=500001;
int n,i,v[N],w[N],u[N];
int pivotare(int st , int dr )
{
int pivot,p=1,Q=1;
pivot=v[st];
for (int j=st+1;j<=dr;++j)
if (v[j]<pivot) w[p++]=v[j];
else u[Q++]=v[j];
int poz = st;
for (i=1;i<=p-1;++i) v[poz++]=w[i];
int pozPivot = poz;
v[poz++] = pivot;
for (i=1; i<=Q-1; ++i) v[poz++] = u[i];
return pozPivot;
}
void quicksort(int st, int dr)
{
if(st >= dr)
return;
int pivPoz = pivotare(st, dr);
quicksort(st, pivPoz - 1);
quicksort(pivPoz+1, dr);
}
int main()
{
in>>n;
for (i=1;i<=n;++i) in>>v[i];
//for (i=1;i<=n;++i) cout<<v[i]<<" "; cout<<"\n";
quicksort(1, n);
for (i=1;i<=n;++i) out<<v[i]<<" ";
return 0;
}