Pagini recente » Cod sursa (job #2467715) | Cod sursa (job #3229146) | Cod sursa (job #46437) | Cod sursa (job #1846126) | Cod sursa (job #3173768)
//V2 - QUICKSORT
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
#define MAXN 500000
int v[MAXN+1];
void qsort(int v[], int pozb, int poze)
{
int pivot, st, dr;
pivot=v[pozb+rand()%(poze-pozb+1)];
st=pozb;
dr=poze;
while(v[st]<pivot)
st++;
while(v[dr]>pivot)
dr--;
while(st<dr)
{
swap(v[st], v[dr]);
do
{
st++;
}
while(v[st]<pivot);
do
{
dr--;
}
while(v[dr]>pivot);
}
if(pozb<dr)
qsort(v, pozb, dr);
if(dr+1<poze)
qsort(v, dr+1, poze);
}
int main()
{
int n;
cin>>n;
int i;
for(i=0; i<n; i++)
cin>>v[i];
qsort(v, 0, n-1);
for(i=0; i<n; i++)
cout<<v[i]<<" ";
return 0;
}