Pagini recente » Cod sursa (job #3197966) | Cod sursa (job #1744929) | Cod sursa (job #1975614) | Cod sursa (job #1908084) | Cod sursa (job #2703533)
#include <iostream>
#include <fstream>
using namespace std;
int v[500005],n;
ifstream in("algsort.in");
ofstream out("algsort.out");
int mediana(int st,int dr)
{
int mij=((st+dr)>>1);
if(v[dr]<v[st])
swap(v[dr],v[st]);
if(v[mij]<v[st])
swap(v[mij],v[dr]);
if(v[dr]<v[mij])
swap(v[dr],v[mij]);
return mij;
}
void quick(int st,int dr)
{
if(st<dr)
{
int piv=mediana(st,dr);
swap(v[dr],v[piv]);
int i=st-1;
for(int j=st;j<=dr-1;j++)
if(v[j]<v[dr])
{
i++;
swap(v[j],v[i]);
}
i++;
swap(v[dr],v[i]);
quick(st,i-1);
quick(i+1,dr);
}
}
int main()
{
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
quick(1,n);
for(int i=1;i<=n;i++)
out<<v[i]<<" ";
return 0;
}