kali-hi
Banned
- Registriert
- Sep. 2025
- Beiträge
- 760
Es geht darum, wie man aus einer Liste (Datenstruktur) zufällig 10 % der Elemente effizient ziehen könnte...
Sagen wir, es gibt 3 Mio. Elemente und 300 Tsd. sollen von diesen gezogen werden.
Mir würden da spontan fünf Wege einfallen:
a) Jeweils einen zufälligen Index wählen, und das Element aus der Liste entfernen
b) Jeweils einen zufälligen Index wählen, die Elemente markieren, und hinterher nur einmal über die Liste iterieren und alle markierten Elemente on-the-fly entfernen
c) Die Liste mischen, und die ersten n Elemente ziehen (oder die letzten n)
d) Eine unsortierte Binärdatenstruktur verwenden, und die ersten n Elemente ziehen
e) Eine neue Liste anlegen, jeweils einen zufälligen Index wählen, und das Element aus der alten in die neue Liste kopieren (also nicht entfernen), und hinterher die alte durch neue Liste ersetzen
Was wäre am besten? Würde sich etwas ändern, wenn anstatt 10 % auch, sagen wir, 50 bis 100 % (generischer Parameter) aus der Liste gezogen werden könnten?
Das sind keine Hausaufgaben, eher ein Gedankenexperiment
Sagen wir, es gibt 3 Mio. Elemente und 300 Tsd. sollen von diesen gezogen werden.
Mir würden da spontan fünf Wege einfallen:
a) Jeweils einen zufälligen Index wählen, und das Element aus der Liste entfernen
b) Jeweils einen zufälligen Index wählen, die Elemente markieren, und hinterher nur einmal über die Liste iterieren und alle markierten Elemente on-the-fly entfernen
c) Die Liste mischen, und die ersten n Elemente ziehen (oder die letzten n)
d) Eine unsortierte Binärdatenstruktur verwenden, und die ersten n Elemente ziehen
e) Eine neue Liste anlegen, jeweils einen zufälligen Index wählen, und das Element aus der alten in die neue Liste kopieren (also nicht entfernen), und hinterher die alte durch neue Liste ersetzen
Was wäre am besten? Würde sich etwas ändern, wenn anstatt 10 % auch, sagen wir, 50 bis 100 % (generischer Parameter) aus der Liste gezogen werden könnten?
Das sind keine Hausaufgaben, eher ein Gedankenexperiment