将一个数组与另一个数组进行排序,然后在该数组中排序

德·海尔

我有两个需要排序的数组。

例如,我可能有以下内容:

@aa = (1, 4, 5, 1, 2); @bb = (3, 1, 2, 2, 3);

以下脚本对中的元素进行排序@aa,然后重新排列@bb,如下所示:

my @idx = sort { $aa[$a] cmp $aa[$b] } 0 .. $#aa;

@aa = @aa[@idx];

@bb = @bb[@idx];

留下@bb(3, 2, 3, 1, 2)

但是,我现在要重新排列元素,@bb以便与相同值对应的那些元素@aa按升序排列。例如,前3 in和2 in@bb都对应于1 in @aa,因此我希望能够交换它们,所以@bb = (2, 3, 3, 1, 2)

是否有捷径可寻。我曾想过一个新的数组,我多次对每一个中的元素@aa@bb在一起,然后使用,但不能看到如何会帮助的。

口渴

如果要对数字进行排序,则应使用<=>,而不是cmp

对我来说,这听起来像您要在aa值相等时要求按bb值对排序进行修改。这很简单:

my @idx = sort {
    $aa[$a] <=> $aa[$b] ||
    $bb[$a] <=> $bb[$b]
} 0 .. $#aa;

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个数组排序为另一个数组-C

如何将一个数组与另一个数组排序

如何根据另一个数组的排序顺序对多个数组进行排序

根据另一个数组的排序顺序对多个数组进行排序

用另一个数组对较大的javascript数组进行排序,然后将值移到该数组的顶部

将一个数组复制到另一个数组,同时对其进行排序

如何按字母顺序对数组进行排序,然后将顺序赋予另一个数组?

相对于已在 Java 中排序的另一个数组对数组进行排序的方法

从另一个数组的一个日期对一个数组进行排序

如何根据另一个数组的排序方式对一个数组进行排序?(JavaScript)

根据在另一个数组中排序的特定值的顺序移动数组条目

通过从另一个数组排序对Swift数组进行排序

根据另一个数组中定义的排序顺序对数组进行排序

根据另一个数组的排序顺序对数组进行排序

根据另一个数组中的顺序对数组数组进行排序

根据数组键顺序对另一个数组内的数组进行排序

根据另一个数组的顺序对数组数组进行排序(Ruby)

优化从另一个数组排序一个数组

相对于另一个数组对一个数组排序

根据另一个数组对一个列表进行排序

对一个数组进行排序比较 PHP 中的另一个数组

按另一个数组的列对一个数组进行排序-Python

在 Python 中根据另一个数组的顺序对一个数组进行排序

如何根据Java中另一个数组的值对一个数组进行排序?

使用比较器无法根据另一个数组对一个数组进行排序

排序到另一个数组

如何将一个数组的排序顺序设置为另一个数组?

将一个数组与另一个数组排序并追加未知的缺失项

如何对两个数组进行排序,其中一个数组基于另一个数组的排序?