Це питання стосується алгоритму Фішера-Йейта для повернення випадкових перетасовок заданого масиву. Сторінка Вікіпедії говорить, що її складність становить O (n), але я думаю, що це O (n log n).
У кожній ітерації i вибирається випадкове ціле число між 1 і i. Просто записати ціле число в пам'ять - O (log i), а оскільки є n ітерацій, то загальна сума є
O (log 1) + O (log 2) + ... + O (log n) = O (n log n)
що не краще, ніж наївний алгоритм. Я щось тут пропускаю?
Примітка. Наївний алгоритм повинен присвоїти кожному елементу випадкове число в інтервалі (0,1), а потім сортувати масив відповідно до призначених чисел.