この質問は、特定の配列のランダムシャッフルを返すFisher-Yatesアルゴリズムに関するものです。Wikipediaのページには、その複雑さはO(n)があると言うが、私はそれが(N Nログ)Oだと思います。
各反復iで、ランダムな整数が1〜iの間で選択されます。単純に整数をメモリに書き込むことはO(log i)であり、反復がn回あるため、合計は
O(log 1)+ O(log 2)+ ... + O(log n)= O(n log n)
ナイーブアルゴリズムの方が優れているわけではありません。ここに何かが足りませんか?
注:単純なアルゴリズムでは、各要素に間隔(0,1)の乱数を割り当て、割り当てられた番号に関して配列を並べ替えます。