![]() |
Sortieren mit PrevID
Hallo ich habe Objekte
Delphi-Quellcode:
und die sind in einer TList drinnen
TItem = class
ID : integer; PrevID : integer; end; nun möchte ich die sortieren, also ganz oben kommt das Element das als PrevID 0 hat, dann das Element das als PrevID die ID des erstens hat .... Ich mache es im moment einfach mit 2 TList, indem ich die Liste durchgehe und das nächste Element suche, dieses dann in die zweite Liste einfüge, und selbes Spielchen wieder von vorne ... bis die Liste leer ist. Aber da muß es doch was vernünftigeres geben oder? |
AW: Sortieren mit PrevID
|
AW: Sortieren mit PrevID
TList.Sort wird ihm nicht helfen, da seine items ja nur paarweise verknüpft sind. Wenn man also 2 items hat kann man nicht immer feststellen, welches das "größere" ist.
Was helfen sollte, ist ein Index. Erstelle einen Index über PrevID, so dass du ein Element anhand seiner PrefID sehr schnell finden kannst. Wenn das nicht geht, sortiere die Liste nach PrefID und benutze eine binäre Suche. |
AW: Sortieren mit PrevID
:oops: die Verkettung habe ich geflissentlich überlesen.
|
AW: Sortieren mit PrevID
Wieviele Elemente sind es denn?
Mit einer Variante des BubbleSort könnte man das innerhalb der TList sortieren. so grob auf die Art
Delphi-Quellcode:
SearchId = 0;
for i := Low to High-1 do for j := i to High do if Element[j].PrevID = SearchId then begin SearchID = Element[j].ID; Swap(i,j); Break; end; |
AW: Sortieren mit PrevID
Es sind eigentlich nicht so viele elemente ... aber dafür viele :)
Ne also in einer Liste sind so um die 100 Elemente drinnen aber es handelt sich sicher um bis zu 30000 solcher Listen die auf einen schlag sortiert werden müssen. Ich glaub das mit dem Bubblesort hört sich mal am besten an bisher ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz