wenn ich da jetzt richtig durchgeblickt habe:
beim pop gibst du den ersten Knoten zurück,
Result:=FNodes[0];
wirfst wenn vorhanden den ersten Knoten weg
Delphi-Quellcode:
if not IsEmpty then
Delete(0);
und stellst dann in der Delete Methode wieder Heap Eigenschaften herstellen, indem du neu sortierst.
--> du benutzt ein Dynamisches Array.
und das ist dein Zeitfresser.
--> bei jeder Änderung wird die SAF (Speicherabbildungsfunktion) des Arrays aufgerufen, was ja bei einem
1000000 Array ne ganz schöne Menge ist.
so würde ich mir das jetzt mal erklären.
Mach das ganze doch Listenbasiert