Cześć, napisałem program w pascalu sortujący liczby przez kopcowanie, ale jest problem z jego dokładnym działaniem (ma problem z liczbami, które się powtarzają) co może być nie tak?
Kod:
program sort_przez_kopiec;
var
d: array[1..1000] of integer;
i,j,k,m,x, N : integer;
begin
readln(N);
//d[1] := 9;
for i := 1 to N do read(d[i]);
for i := N downto 1 do
begin
x := d[1];
d[1] := d[i];
d[i] := x;
j := 1;
k := 2;
while k < i do
begin
if (k + 1 < i) and (d[k + 1] > d[k]) then
m := k + 1
else
m := k;
if d[m] <= d[j] then break;
x := d[j];
d[j] := d[m];
d[m] := x;
j := m;
k := j + j;
end;
end;
for i := 1 to N do write(d[i]:2);
end.