Мне нужен код Perl для ранжирования чисел в массиве в другой массив без сортировки.Итак, input: (10, 4, 2, 9, 32) => output: (4, 2, 1, 3, 5)
У меня есть этот код, который близок, но я считаю его бесполезным, потому что вводи вывод не совсем то, что я хочу:
use strict;
use warnings;
use Data::Dumper;
my %data =
(
1 => 10,
2 => 4,
3 => 2,
4 => 9,
5 => 32,
);
my ($n, @rank) = 1;
foreach( keys %data){
$rank[ $data{$_} ] .= "$_ ";
}
defined and $n += print for @rank;
Вышеприведенный код выводит:
3 2 4 1 5
Вывод неправильный и вывод вообще, кстати, не является необходимым, я просто хочумой массив результатов @rank как одномерный массив, как описано.Желательно, если это возможно без назначения ключей для данных входного массива.