N=200
Dim halda(N)
For a=1 To N
halda(a)=Int(Rnd(100))
Next a
NPrint "Nestridene pole:"
Gosub vypis
Gosub makeheap
NPrint "Halda:"
Gosub vypis
Gosub setrid
NPrint "Setridene pole:"
Gosub vypis
d$=Edit$(1)
End
setrid
For a=1 To N-1
Gosub vypustmin
halda(pocet+1)=minimum
Next a
Return
vypustmin
minimum=halda(1)
X=halda(pocet)
pocet=pocet-1
otec=1
pokracuj=True
While pokracuj
syn=2*otec
If syn<=pocet
If synhalda(syn+1) Then syn=syn+1
EndIf
If X>halda(syn)
halda(otec)=halda(syn)
otec=syn
Else
pokracuj=False
EndIf
Else
pokracuj=False
EndIf
End While
halda(otec)=X
Return
makeheap
For pocet=2 To N
syn=pocet
X=halda(pocet)
pokracovat=True
While pokracovat
otec=Int(syn/2)
If halda(otec)