РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
297 of 1245 menu

Метод 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,
    который меняет порядок элементов среза на обратный
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить