Triedenia |
30. mar.1999 |
const max=100;
type datum=record den,mes,rok:integer end;
tstudent=record p:integer; s:array[1..max] of student end; procedure citaj(var t:tstudent);
procedure vypis(var t:tstudent);
function mensidat(x,y:datum):boolean;
function mensi(a,b:student):boolean;
procedure tried(var t:tstudent); { minsort }
var t:tstudent; begin { hlavný program }
|
procedure heapsort(n:integer);
begin
vytvor_haldu(n);
i:=n;
{ ber postupne všetky prvky }
while i>1 do
begin
{ vymen 1. a posledný zatiaľ neutriedený, t.j. i-ty prvok }
t:=a[1]; a[1]:=a[i]; a[i]:=t;
dec(i);
{ zmenši rozmer stromu }
uprac_haldu(1,i); { oprav
strom - koreň je asi zlý }
end;
end;
procedure vytvor_haldu(n:integer);
var i:integer;
begin
for i:= n div 2 downto 2 do uprac_haldu(i,n)
end;