如何生成数组中两个元素的所有排列?

神秘家伙

我想从给定的数组生成所有数组,这些数组是通过交换数组中的每个可能的几对元素而获得的,基本上是$ \ frac {n \ cdot(n-1)} {2} $。最简单的制作方法是什么?

[编辑]:例如,如果我有[1 2 3 4]阵列,我会生成[1 3 2 4][1 2 4 3][1 4 3 2][2 1 3 4][3 2 1 4][4 2 3 1]

路易斯·门多

您可以使用此:

x = [10 20 30 40]; % example input array
t = nchoosek(1:numel(x),2); % each row defines a swapping of two elements
ind = bsxfun(@plus, (1:size(t,1)).', (t-1)*size(t,1)); % convert to linear index
result = repmat(x, size(t,1), 1); % initiallize result as copies of the input
result(ind) = result(fliplr(ind)); % do the swapping in each row

在这个例子中

result =
    20    10    30    40
    30    20    10    40
    40    20    30    10
    10    30    20    40
    10    40    30    20
    10    20    40    30

结果的每一行都包含交换了2个元素的输入。交换按字典顺序进行因此在第一行中,元素1和2被交换;在第二行中,元素1和3被交换;...; 最后一行中的元素3和4被交换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从 Perl 中的两个不同数组获得所有可能的组合(不是排列)?

如何从两个向量的元素的所有可能组合中获得单个数组?

如何找到同一数组中包含所有元音的两个元素

如何将具有两个单独对象的数组列表生成的表列中的所有值相加?

模拟GraphQL,MockList仅生成数组中的两个项目

获取多维数组PHP中两个元素之间的所有数组

Perl 如何以更快的方式遍历和比较两个不同数组中的所有元素?

生成数组之间元素的所有组合

在Scala中的两个列表之间交换元素时生成所有可能性

Kotlin - 数组列表 - 如果少于两个,如何删除 T 类型的所有元素

如何合并两个动态创建的数组的所有元素并将结果写入HTML?

如何检查数组的所有元素是否在两个值之间

如何在所有匹配元素中仅选择两个元素?

ruby / rails排列两个索引之间的所有元素

随机排列数组,以便没有两个相同的元素相邻

重新排列数组,使得没有两个相邻的元素是相同的

如何生成两个日期之间的所有日期

PHP - 生成数组中项目的所有组合

在R中:如何根据具有两个字符列表的公共元素生成数据表的子集

如何在python中生成值为n的两个数字的所有可能排列?

从两个列表中获取元素的所有组合?

如何为Swift数组中的元素生成数字?

如何为从SQL中的两个日期列提取的日期范围生成所有日期

如何获得Kotlin中两个列表的所有元素的总和?

如何平均两个具有相同元素的数组?

PHP:从关联数组中删除除最后两个元素以外的所有元素

绘制两个不连续范围的所有排列

如何从具有两个条件的数组中查询元素(MongoDB)

如何在猫鼬中搜索带有两个元素的对象数组