Pagini recente » Cod sursa (job #2961845) | Cod sursa (job #1610895) | Cod sursa (job #2022230) | Cod sursa (job #1646169) | Cod sursa (job #3153528)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500001];
int piv(int v[], int st, int dr)
{
int mij=(st+dr)>>1;
if(v[st]>v[dr])
swap(v[st],v[dr]);
if(v[st]>v[mij])
swap(v[st],v[mij]);
if(v[mij]>v[dr])
swap(v[mij],v[dr]);
return v[mij];
}
int part(int v[], int st, int dr)
{
int i,j,mij=piv(v,st,dr);
for(i=st-1,j=dr+1;;)
{
i++;
j--;
while(v[i]<mij)
i++;
while(v[j]>mij)
j--;
if(i>=j)
return j;
swap(v[i],v[j]);
}
}
void qsort(int st, int dr)
{
if(st<dr)
{
int p=part(v,st,dr);
qsort(st,p);
qsort(p+1,dr);
}
}
int main()
{
int n,i;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
qsort(1,n);
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}