To pytanie dotyczy algorytmu Fishera-Yatesa służącego do zwracania losowego losowania danej tablicy. The Wikipedii mówi, że jego złożoność wynosi O (n), ale myślę, że jest to O (n log n).
W każdej iteracji i losowa liczba całkowita jest wybierana między 1 a i. Po prostu zapisywanie liczby całkowitej w pamięci to O (log i), a ponieważ istnieją iteracje, suma jest równa
O (log 1) + O (log 2) + ... + O (log n) = O (n log n)
co nie jest lepszym naiwnym algorytmem. Czy coś mi umyka?
Uwaga: Naiwnym algorytmem jest przypisanie każdemu elementowi losowej liczby w przedziale (0,1), a następnie posortowanie tablicy pod względem przypisanych liczb.