Diese Frage bezieht sich auf den Fisher-Yates-Algorithmus zum Zurückgeben einer zufälligen Mischung eines gegebenen Arrays. Die Wikipedia-Seite sagt, dass ihre Komplexität O (n) ist, aber ich denke, dass es O (n log n) ist.
In jeder Iteration i wird eine zufällige ganze Zahl zwischen 1 und i gewählt. Das einfache Schreiben der Ganzzahl in den Speicher ist O (log i), und da es n Iterationen gibt, ist die Summe gleich
O (log 1) + O (log 2) + ... + O (log n) = O (n log n)
Das ist nicht besser der naive Algorithmus. Vermisse ich hier etwas?
Hinweis: Der naive Algorithmus weist jedem Element eine Zufallszahl im Intervall (0,1) zu und sortiert dann das Array in Bezug auf die zugewiesenen Zahlen.