Метод sort_by
Метод sort_by сортирует элементы среза,
используя переданную функцию сравнения.
Параметром метод принимает замыкание или функцию,
которая получает два элемента и возвращает
значение типа Ordering.
Метод изменяет исходный срез и не возвращает значения.
Синтаксис
slice.sort_by(compare)
Пример
Давайте отсортируем срез чисел по возрастанию с помощью функции сравнения:
use std::cmp::Ordering;
fn compare(a: &i32, b: &i32) -> Ordering
{
a.cmp(b)
}
fn main()
{
let mut arr = [3, 1, 5, 2, 4];
arr.sort_by(compare);
println!("{:?}", arr);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте отсортируем срез чисел по убыванию,
передав замыкание в метод sort_by:
fn main()
{
let mut arr = [3, 1, 5, 2, 4];
arr.sort_by(|a, b| b.cmp(a));
println!("{:?}", arr);
}
Результат выполнения кода:
[5, 4, 3, 2, 1]
Пример
Давайте отсортируем срез строк по длине, используя пользовательскую функцию сравнения:
fn main()
{
let mut arr = ["abcde", "a", "abc", "ab", "abcd"];
arr.sort_by(|a, b| a.len().cmp(&b.len()));
println!("{:?}", arr);
}
Результат выполнения кода:
["a", "ab", "abc", "abcd", "abcde"]
Смотрите также
-
метод
sort,
который сортирует срез по возрастанию -
метод
sort_unstable,
который сортирует срез без гарантии стабильности -
метод
is_sorted,
который проверяет, отсортирован ли срез -
метод
reverse,
который меняет порядок элементов среза на обратный