Pagini recente » Cod sursa (job #2593322) | Cod sursa (job #2524111) | Cod sursa (job #2041148) | Cod sursa (job #2957630) | Cod sursa (job #2195900)
#include<fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500005],n;
void HeapSort()
{
int imax,l,r,aux,nod;
for(int i=n/2;i>=1;i--)
{
nod=i;
do
{
l=2*nod; r=2*nod+1;
imax=nod;
if(l<=n && v[l]>v[imax])
imax=l;
if(r<=n && v[r]>v[imax])
imax=r;
aux=v[nod]; v[nod]=v[imax]; v[imax]=aux;
nod=imax;
}while(imax!=nod);
}
for(int i=n;i>=1;i--)
{
aux=v[1]; v[1]=v[i]; v[i]=aux;
nod=1;
do
{
l=2*nod; r=2*nod+1;
imax=nod;
if(l<=i-1 && v[l]>v[imax])
imax=l;
if(r<=i-1 && v[r]>v[imax])
imax=r;
aux=v[nod]; v[nod]=v[imax]; v[imax]=aux;
nod=imax;
}while(imax!=nod);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
HeapSort();
for(int i=1;i<=n;i++)
cout<<v[i]<<' ';
}