const n=100; type TYP_KLIC = integer; TYP_HODNOTA = integer; INDEX = 1..n; PRVEK = record KLIC : TYP_KLIC; HODNOTA : TYP_HODNOTA end; POLE_PRVKU = array [INDEX] of PRVEK; procedure BOTTOMUP_HEAP_SORT(var H: POLE_PRVKU; n: integer); var L,R: INDEX; X: PRVEK; function BIN(I: integer): integer; var Pom: integer; begin Pom:= 0; while I<>0 do begin I:= I shr 1; Pom:= Pom + 1; end; BIN:= Pom; end; procedure LEAF_SEARCH(L,R: integer; var J: integer); begin J:= L; while 2*J < N do if H[2*J].KLIC < H[2*J+1].KLIC then J:= J*2 else J:= J*2+1; if 2*J = R then J:= R; end; procedure BOTTOM_UP_SEARCH(L: integer; var J: integer); begin while (L1 do begin L:= L-1; BOTTOM_UP_REHEAP(L,R); end; while R>1 do begin X:= H[1]; H[1]:= H[R]; H[R]:= X; R:= R-1; BOTTOM_UP_REHEAP(L,R); end; end;