У меня есть два массива, которые нужно отсортировать.
Например, у меня может быть следующее:
@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
as (3, 2, 3, 1, 2)
.
Однако теперь я хочу переставить элементы в @bb
, чтобы те, которые соответствуют одинаковым значениям в @aa
, находились в порядке возрастания.Например, первые 3 и 2 в @bb
, оба соответствуют 1 в @aa
, и поэтому я хочу иметь возможность поменять их местами, поэтому @bb = (2, 3, 3, 1, 2)
.
Есть ли простойспособ сделать это.Я думал о новом массиве, в котором я умножаю каждую пару элементов в @aa
и @bb
вместе, а затем использую это, но не могу понять, как это тоже поможет.