Pagini recente » Cod sursa (job #2053330) | Cod sursa (job #2371507) | Cod sursa (job #998767) | Cod sursa (job #1256156) | Cod sursa (job #1415876)
#include<fstream>
using namespace std;
#define MAX 500001
unsigned int H[MAX],N,el,M=0,k,child,i;
int main()
{
ifstream in("algsort.in");
ofstream out("algsort.out");
in>>N;
for(i=1;i<=N;i++)
{
in>>el;
if(M==0)
H[++M]=el;
else
{
H[++M]=el;
k=M;
while(k>0 && H[k]<H[k/2])
{
swap(H[k],H[k/2]);
k=k/2;
}
}
}
for(i=1;i<=N;i++)
{
out<<H[1]<<" ";
swap(H[1],H[M]);
--M;
k=1;
do
{
child =0;
if(2*k<=M)
{
if(H[2*k]<H[k])
child=2*k;
if(2*k+1<=M && H[2*k+1]<H[k])
{
if(child==0)
child=2*k+1;
else
if(H[2*k+1]<H[child])
child=2*k+1;
}
if(child)
{
swap(H[k],H[child]);
k=child;
}
}
}while(child);
}
return 0;
}