オプション0:インプレース順列(1995)by Faith E. Fich、J. Ian Munro、Patricio V. Poblete time spaceO (log 2 n )O(nlogn)O(log2n)
オプション1:順列を簡潔なデータ構造に圧縮してチートします。Munrohttp://www.itu.dk/people/ssrao/icalp03-a.pdfを参照して ください。
オプション2:素数サイクル分解を使用してpermを簡潔に保存し、その余分なスペースを使用してチートするhttp://oeis.org/A186202
オプション3:操作された各サイクルの最大インデックスを追跡します。反復ごとに、最大の非表示インデックスを使用して、サイクル内のすべてを1つずつ移動します。表示されたインデックスにヒットした場合、サイクルは既に操作されているため、すべての作業を取り消します。時間、スペース。O (#サイクル∗ log n )O(n2)O(#cycles∗logn)
オプション4:操作された各サイクルの最大インデックスを追跡しますが、異なるサイクル長のバッチでのみ実行します。反復ごとに、最大の非表示インデックスを使用して、そのサイクル内のすべてを1つずつ移動します。見かけのインデックスにヒットした場合、サイクルは既に操作されているため、すべての作業を取り消します。時間、スペース。O ((#サイクル_ with _ 同じ_ サイズ)∗ log n )O(n2∗distinct_cycle_lengths)O((#cycles_with_same_size)∗logn)
オプション5:Munroによるオプション0と同じ用紙から、場合、がそのサイクルの最大インデックスである場合、サイクルを回転します。時間とスペース。p (i )i O (n 2)O (log n )i=1..np(i)iO(n2)O(logn)