6
Fisher-Yates Shuffleアルゴリズムの複雑さ
この質問は、特定の配列のランダムシャッフルを返す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)の乱数を割り当て、割り当てられた番号に関して配列を並べ替えます。