Pagini recente » Cod sursa (job #997734) | Cod sursa (job #2208710) | Cod sursa (job #589118) | Cod sursa (job #1364521) | Cod sursa (job #2195902)
#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--)
{
imax=i;
do
{
nod=imax;
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;
}while(imax!=nod);
}
for(int i=n;i>=1;i--)
{
aux=v[1]; v[1]=v[i]; v[i]=aux;
imax=1;
do
{
nod=imax;
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;
}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]<<' ';
}