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

标签 algorithm matlab graph permutation combinatorics

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

我计划开发一种算法并在 Matlab 上运行它来完成这项工作。我只能想到一个算法,花费n!次:尝试 n 中的所有排列。

有没有更快的算法?

最佳答案

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

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

关于algorithm - 如何判断两个序列是否因排列不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53644935/

相关文章:

matlab - matlab 3D 绘图中的次要 y Axis (surf、mesh、surfc)

matlab - 如果我们为它赋值(MATLAB),如何取回清除命令?

algorithm - 包含 n 个节点的最优图路径

networking - 你如何描述这种图表?

algorithm - 评估 MongoDB 聚合查询复杂度 : cost of $lookup

postgresql - 如何遍历表并使用列属性在 postGIS 中创建一条线

javascript - 递归回溯生成迷宫

c++ - 为什么带有多个 copy_n() 的 std::istream_iterator<> 总是写入第一个值

matlab - 如何使用 FOR 循环将数据数组分成这样的 block ?

graph - Neo.ClientError.Statement.SemanticError : Cannot merge node using null property value for Id