Pagini recente » Cod sursa (job #2964701) | Cod sursa (job #2965274) | Cod sursa (job #757061) | Cod sursa (job #130001) | Cod sursa (job #2270120)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int H[500003],x,n,i,aux,srt[500003];
int HeapUp(int x)
{
if(x>1)
{
if(H[x]>H[x/2])
{
swap(H[x],H[x/2]);
HeapUp(x/2);
}
}
}
int HeapDown(int x, int n)
{
int st,dr;
if (2*x<=n)
{
st=H[2*x];
if (2*x+1<=n)
{
dr=H[2*x+1];
}
else
{
dr=st-1;
}
if (max(st,dr)>H[x])
{
if (st>dr)
{
swap(H[x],H[2*x]);
HeapDown(2*x,n);
}
else
{
swap(H[x],H[2*x+1]);
HeapDown(2*x+1,n);
}
}
}
}
int main()
{
f>>n;
for(i=1; i<=n; i++)
{
f>>H[i];
HeapUp(i);
}
aux=n;
while(n>1)
{
swap(H[1],H[n]);
srt[n]=H[n];
n--;
HeapDown(1,n);
}
srt[1]=H[1];
for(i=1; i<=aux; i++)
g<<srt[i]<<" ";
return 0;
}