Napisalem z Cormena Sortowanie przez kopcowanie, ale nie sortuje wcale. Nie wiem gdzie jest błąd. Proszę o pomoc.
uses crt;
const
max = 10
type
tab = array [1 .. max] of integer;
procedure MAXHEAPIFY(var A: tab; n: integer; i: integer);
var
l, r, largest: integer;
tmp: integer;
begin
l := (2 * i);
r := (2 * i) + 1;
if ((l <= n) and (A[l] > A[i])) then
largest := l
else
largest := i;
if ((r <= n) and (A[r] > A[largest])) then
largest := r;
if (largest <> i) then
begin
tmp := A[i];
A[i] := A[largest];
A[largest] := tmp;
MAXHEAPIFY(A, n, largest);
end;
end;
procedure BUILDHEAP(var A: tab; n: integer);
var
i: integer;
begin
for i := (n div 2) downto 1 do
MAXHEAPIFY(A, n, i);
end;
procedure HEAPSORT(var A: tab; n: integer);
var
tmp, hsize, i: integer;
begin
BUILDHEAP(A, n);
hsize := n;
for i := n downto 2 do
begin
tmp := A[1];
A[1] := A[i];
A[i] := tmp;
hsize := n - 1;
MAXHEAPIFY(A, hsize, 1);
end;
end;
var
a: integer;
B: tab;
begin
clrscr;
randomize;
for a := 1 to max do
begin
B[a] := random(max);
writeln(B[a]);
end;
writeln;
HEAPSORT(B, max);
writeln;
for a := 1 to max do
writeln(B[a]);
end.