code for decomposing a permutation into a product of transpositions

Revision en5, by Hot_Potato, 2020-09-01 20:58:24

Given a list of strings lst and a list of integers p, reorder lst so that every lst[i] gets placed to p[i]. Example 1 Input

lst = ["a", "b", "c", "d"] p = [3, 0, 1, 2] Output

["b", "c", "d", "a"] Explanation

a goes to index 3 b goes to index 0 c goes to index 1 d goes to index 2

I am trying to solve this by decomposing permutation p into a product of transposition(swaps) and then use those swaps to reorder lst.. can anyone give me the code for decomposing a permutation into a product of transpositions? Note it has to be done in O(1) space..otherwise it is trivial

Tags #combinatorics

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en5 English Hot_Potato 2020-09-01 20:58:24 191 (published)
en4 English Hot_Potato 2020-09-01 20:56:54 63 (saved to drafts)
en3 English Hot_Potato 2020-09-01 20:28:55 0 (published)
en2 English Hot_Potato 2020-09-01 20:27:23 4 (saved to drafts)
en1 English Hot_Potato 2020-09-01 20:25:48 406 Initial revision (published)