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)