000
29.04.2005, 10:35 Uhr
Steffen_dd
|
Hi
ich such ne Möglichkeit meine COblist Listen schnell zu durchsuchen. Und zwar baue ich mehrere COblist-Listen auf die teilweise bis zu 150000 CObjekt-Elemente enthält.
Derzeit mache ich es so das ich wenn ich ein neues CObjekt-Element habe die COblist von oben nach unten durchlaufe und nachsehe ob ich es schon habe. Wenn ich es habe gibt es ein False zurück. Wenn ich es noch nicht habe dann kommt es mittels COblist.Addtail ans Ende der Liste und die Suche geht mit dem nächtes CObjekt-Element weiter.
Das funktioniert zwar alles ganz gut, bloss mit der Laufzeit bin ich überhaupt nicht zufrieden, da es ab 10000 Elementen echt träge wird.
Jetzt wollt ich die Suche einfacher machen, indem ich in die Mitte der Liste springe und dann nur noch den Oberen oder unteren Teil durchsuche, und so weiter. (so ne Art Quicksearch)
Anfang und Ende kann ich ja noch per GetHeadPos und GetTailPos ermitteln, aber für die Mitte fällt mir nix ein, ausser über Getnext und Listenlänge/2 ermitteln. Weiss jemand da ne Idee? Ein (GetHeadPos + GetTailPos)/2=Mitte geht auch nicht, da es ja Pointer sind, oder gibt es doch ne Möglichkeit?
Danke Steffen |