Pagini recente » Cod sursa (job #2963911) | Cod sursa (job #900056) | Cod sursa (job #2123214) | Cod sursa (job #205357) | Cod sursa (job #2465152)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i,x,h[500005],l;
void HeapUp(int k)
{
if(k>1)
{
int t=k/2;
if(h[k]<h[t])
{
swap(h[k],h[t]);
HeapUp(t);
}
}
}
void HeapDown(int k)
{
int st=0,dr=0;
if(2*k<=l)
{
st=2*k;
if(2*k+1<=l)
dr=2*k+1;
if(h[st]<h[dr] || dr==0)
{
if(h[k]>h[st])
{
swap(h[k],h[st]);
HeapDown(st);
}
}
else if(h[k]>h[dr])
{
swap(h[k],h[dr]);
HeapDown(dr);
}
}
}
int main()
{
f>>n;
for(i=1; i<=n; i++)
{
f>>x;
h[i]=x;
HeapUp(i);
}
l=n;
for(i=1; i<=n; i++)
{
g<<h[1]<<' ';
h[1]=h[l];
h[l]=0;
l--;
HeapDown(1);
}
return 0;
}