Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Sortieren mit PrevID (https://www.delphipraxis.net/160243-sortieren-mit-previd.html)

Gruber_Hans_12345 4. Mai 2011 08:50

Sortieren mit PrevID
 
Hallo ich habe Objekte

Delphi-Quellcode:
TItem = class
  ID : integer;
  PrevID : integer;
end;
und die sind in einer TList drinnen

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?

DeddyH 4. Mai 2011 09:15

AW: Sortieren mit PrevID
 
TList.Sort

jfheins 4. Mai 2011 09:50

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.

DeddyH 4. Mai 2011 09:58

AW: Sortieren mit PrevID
 
:oops: die Verkettung habe ich geflissentlich überlesen.

Satty67 4. Mai 2011 11:15

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;

Gruber_Hans_12345 4. Mai 2011 12:31

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 09:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz