Opsi 0: Permuting In Place (1995) oleh Faith E. Fich, J. Ian Munro, Patricio V. Poblete waktu spasi.O ( log 2 n )O ( n logn )O ( log2n )
Opsi 1: Cheat dengan mengompresi permutasi Anda ke struktur data yang ringkas, lihat Munro http://www.itu.dk/people/ssrao/icalp03-a.pdf .
Opsi 2: Gunakan dekomposisi siklus utama untuk menyimpan perm secara ringkas dan gunakan ruang ekstra itu untuk menipu http://oeis.org/A186202
Opsi 3: Melacak indeks terbesar dari setiap siklus yang dimanipulasi. Untuk setiap iterasi, gunakan indeks tak terlihat terbesar untuk memindahkan segala sesuatu dalam siklusnya satu per satu. Jika itu menyentuh indeks terlihat membatalkan semua yang berhasil karena siklus telah dimanipulasi. waktu, spasi.O ( # siklus ∗ log n )O(n2)O(#cycles∗logn)
Opsi 4: Melacak indeks terbesar dari setiap siklus yang dimanipulasi, tetapi hanya melakukannya dalam kumpulan panjang siklus yang berbeda. Untuk setiap iterasi, gunakan indeks tak terlihat terbesar untuk memindahkan semua yang ada dalam siklusnya satu per satu. Jika itu menyentuh indeks terlihat membatalkan semua yang berhasil karena siklus sudah dimanipulasi. waktu, spasi.O ( ( # siklus _ dengan _ yang sama _ ukuran ) * log n )O(n2∗distinct_cycle_lengths)O((#cycles_with_same_size)∗logn)
Opsi 5: Dari makalah yang sama oleh Munro sebagai Opsi 0, Untuk putar siklus jika adalah indeks terbesar dalam siklus itu. waktu dan ruang.p ( i ) i O ( n 2 ) O ( log n )i=1..np(i)iO(n2)O(logn)