Hallo Yalu,
Yalu X. schrieb:
Mit einer Hashtabelle geht es evtl. noch schneller, unter günstigen
Bedingungen in O(n).
ohne weitere Erklärung ist diese Behauptung verwirrend.
Vermutlich willst Du alle Elemente der Reihe nach in einem Bitfeld aushaken, dass so groß ist wie der Wertebereich der Hashs, die sich auch für Dich in O(1) berechnen lassen müssen.
Dann ist der Bearbeitungsaufwand minimal [ O(1) ], weil Du für jedes Element nur nachprüfen musst, ob seine Position im Bitfeld schon gesetzt ist.
Du tauschst dann allerdings Rechenzeit gegen Speicherplatz ein.
Allerdings gibt es auch keine Gewähr dafür, dass Dein Bitfeld in einem Stück im Speicher liegt und der Aushakvorgang nur O(1) dauert.
Die O-Notation zielt ja auf große n ab.
Von daher bezweifele ich jede Laufzeitangabe, die schneller ist als O(n*log(n)).
Der günstigste Fall ist ja eigentlich nicht der interessanteste, sondern eher der schlechteste Fall oder der mittlere...