Pagini recente » Cod sursa (job #1523652) | Cod sursa (job #1286907) | Cod sursa (job #1415728) | Cod sursa (job #359398) | Cod sursa (job #2077059)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int h[500005];
int n,nh,r,i,x,aux;
void urcare(int p)
{
int aux;
while(p>=2 && h[p/2]<h[p])
{
aux=h[p];
h[p]=h[p/2];
h[p/2]=aux;
p=p/2;
}
}
void coborare(int p,int nh)
{
int aux;
while(p*2<=nh)
{
r=p*2;
if(r+1<=nh && h[r+1]>h[r])
{
r=r+1;
}
if(h[p]<h[r])
{
aux=h[p];
h[p]=h[r];
h[r]=aux;
p=r;
}
else
{
break;
}
}
}
int main()
{
fin>>n;
nh=0;
for(i=1;i<=n;i++)
{
fin>>x;
nh++;
h[nh]=x;
urcare(nh);
}
for(i=nh;i>=2;i--)
{
aux=h[1];
h[1]=h[i];
h[i]=aux;
nh--;
coborare(1,nh);
}
for(i=1;i<=n;i++)
{
fout<<h[i]<<" ";
}
fin.close();
fout.close();
return 0;
}