是否存在比O(n ^ 2)更好的算法,用于重新排序列表2以匹配列表1
清单1:A B C D
清单2:B D C A
注意:与List 1相比,List 2可以拥有更多,更少甚至完全不同的项目。
答案 0 :(得分:1)
如果您可以为列表中的项目类型创建总排序,则可以通过对项目进行排序来为列表1创建索引。然后,您可以使用此索引重新排序列表2.此算法的时间为O(n log n),并且在空间中需要额外的O(n)。
答案 1 :(得分:0)
导致O(n Log(n))的一种可能性如下。这需要将列表值读入数组/向量/可排序类型的结构:
编辑后,您提到第二个列表可能与第一个列表没有关联。所以比较函数必须考虑到这一点。如果被比较的一个或两个值不在第一个列表中,那么比较函数需要决定是否对值进行排序(例如,它们是在结尾还是在开头?)。
答案 2 :(得分:0)
您正在寻找Diff Algorithm!