使一个数组与另一个数组匹配的最小交换顺序?

时间:2018-11-07 06:16:12

标签: arrays algorithm graph-theory swap

我有两个长度相同的数组AB

AB包含相同的元素,但顺序不同。

我需要通过只交换A 中的任意两个元素来使BA 相匹配。我还需要在可能的最小交换次数中执行此操作。数组可以包含重复的元素。

例如,如果

A = {3,8,5,8}

B = {8,8,3,5}

最低需要交换为2,顺序为

swap(0, 2)
swap(0, 3)

我知道如何从hereor here之类的源中查找需要进行多少次交换,但是我找不到有关生成交换顺序所需的任何信息,以进行{ {1}}个匹配A。我相信该解决方案涉及有向图和循环,但是我无法完全确定一种小于O(n ^ 2)时间的有效算法。

0 个答案:

没有答案