Hallo, hab gerade mal probiert den Heapsort zu programmieren, aber denke ich habe die Funktionsweise nicht ganz verstanden. Der soll doch noch schneller sein als qick und mergesort oder? Bei meinem Heapsort sortiert er die Zahlenreihe zwar korrekt, aber in einer viel langsameren Zeit als quick und mergesort. Hier der Code:
Delphi-Quellcode:
procedure heap_sort;
var i,y: integer;
begin
IF anzahl > 1 THEN
begin
FOR i := (Anzahl - 1) DOWNTO 1 DO
begin
FOR y := (i+1) DIV 2 DOWNTO 1 DO
begin
IF sortfeld[y] < sortfeld[2*y] THEN
tausche(sortfeld[y],sortfeld[2*y]);
IF (sortfeld[y] < sortfeld[2*y+1]) AND ((2*y+1) <= (i+1)) THEN
tausche(sortfeld[y],sortfeld[2*y+1]);
end;
tausche(sortfeld[1],sortfeld[i+1]);
end;
end;
end;
Kann mir jemand sagen wo ich die Funktionsweise falsch verstanden habe?
Gruss Sven