Этот вопрос относится к алгоритму Фишера-Йейтса для возврата случайного перемешивания данного массива. На странице Википедии написано, что ее сложность составляет 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), а затем сортировка массива по назначенным числам.