Как можно отсортировать массив в Perl?

Пользователь

от narciso , в категории: Другие , год назад

Как можно отсортировать массив в Perl?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от brooklyn , год назад

@narciso 

В Perl есть несколько способов сортировки массива. Например:

  1. Функция sort:
1
2
my @array = (3, 1, 4, 1, 5, 9);
my @sorted_array = sort @array; # сортировка по возрастанию


  1. Функция sort с пользовательской функцией сравнения:
1
2
my @array = (3, 1, 4, 1, 5, 9);
my @sorted_array = sort { $a <=> $b } @array; # сортировка по возрастанию чисел


Здесь $a и $b являются переменными, которые содержат пару значений из массива, сравниваемых между собой.

  1. Функция reverse в сочетании с sort:
1
2
my @array = (3, 1, 4, 1, 5, 9);
my @sorted_array = reverse sort @array; # сортировка по убыванию


  1. Функция sort с пользовательской функцией сравнения для строк:
1
2
my @array = ("foo1", "foo10", "foo2", "foo20");
my @sorted_array = sort { $a cmp $b } @array; # сортировка по возрастанию строк


Здесь cmp - оператор сравнения для строк.

  1. Функция sort с пользовательской функцией сравнения для сложных объектов:
1
2
3
4
5
6
my @array = (
    { name => "Bob", age => 30 },
    { name => "Alice", age => 25 },
    { name => "Charlie", age => 35 },
);
my @sorted_array = sort { $a->{age} <=> $b->{age} } @array; # сортировка по возрасту


Здесь функция сравнения сортирует массив по значению ключа age в каждом объекте, который является ссылкой на хеш.


В Perl также есть другие способы сортировки массивов, но вышеуказанные методы наиболее распространены и удобны в использовании.