如何判断两个序列是否因排列而不同?

时间:2018-12-06 05:01:06

标签: algorithm matlab graph permutation combinatorics

给出n个实数的任意两个序列,例如(a1,a2,...,an)和(b1,b2,...,bn),如何判断一个序列(也可以看作是向量)是另一个的排列?

我计划开发一种算法并在Matlab上运行该算法。我只能想到一个成本为n的算法!次:只需尝试n中的所有排列。

有更快的算法吗?

2 个答案:

答案 0 :(得分:1)

只需对两个序列进行排序并比较排序的结果。

在某些情况下,您可能会从两个序列中找到有用的创建集/地图/词典(如果可能有多个元素,则带有计数器),并检查另一个集合中每个元素的存在。

答案 1 :(得分:1)

首先,为什么要n! ?如果对于每个ai,您在bi中搜索匹配项,您将获得O(n ^ 2)。 无论如何,使用具有O(nlogn)复杂度的排序效率更高。

A=[3,1,2,7];
B=[2,3,1,7];
isPermutated=isequal(sort(A),sort(B))