Ist es möglich, die Elemente eines Feldes der Größe n gleichmäßig zu mischen, d. h., die Wahrscheinlichkeit, dass jede der n! O(n)
Zeit. Wie das? Ich muss die Elemente der A
in ein neues Array B
Das erste, was mir in den Sinn kommt, wenn ich versuche, dies zu tun, ist, eine zufällige Zahl zu wählen i
von 1 bis n, um zu sehen, ob A[i]
bereits ausgewählt wurde, wenn ja, dann wiederholen, ansonsten A[i]
an der ersten freien Stelle in B
. Dieses Problem des Couponsammelns hat jedoch einen erwarteten Zeitaufwand O(n log n)
. Kann jemand einen Vorschlag für eine O(n)
Algorithmus der erwarteten Zeit.
Danke.