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

Метод binary_search

Метод binary_search выполняет бинарный поиск элемента в отсортированном векторе. Он возвращает значение типа Result: вариант Ok с индексом найденного элемента или вариант Err с индексом, по которому элемент можно вставить, чтобы сохранить порядок сортировки. Параметром метод принимает ссылку на значение, которое нужно найти.

Важно: вектор должен быть отсортирован по возрастанию, иначе результат поиска будет непредсказуемым.

Синтаксис

vec.binary_search(&value)

Пример

Давайте найдём элемент 3 в отсортированном векторе:

fn main() { let vec = vec![1, 2, 3, 4, 5]; let res = vec.binary_search(&3); println!("{:?}", res); }

Результат выполнения кода:

Ok(2)

Пример

Давайте попробуем найти элемент 6, которого нет в векторе:

fn main() { let vec = vec![1, 2, 3, 4, 5]; let res = vec.binary_search(&6); println!("{:?}", res); }

Результат выполнения кода:

Err(5)

Число 5 означает, что элемент 6 следует вставить по индексу 5, чтобы сохранить порядок сортировки.

Пример

Давайте найдём строку "c" в отсортированном векторе строк:

fn main() { let vec = vec!["a", "b", "c", "d", "e"]; let res = vec.binary_search(&"c"); println!("{:?}", res); }

Результат выполнения кода:

Ok(2)

Пример

Давайте используем результат поиска для вставки элемента в нужную позицию:

fn main() { let mut vec = vec![1, 2, 4, 5]; let value = 3; match vec.binary_search(&value) { Ok(pos) => println!("Found at {}", pos), Err(pos) => vec.insert(pos, value), } println!("{:?}", vec); }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Смотрите также

  • метод sort,
    который сортирует вектор по возрастанию
  • метод contains,
    который проверяет наличие элемента в векторе
  • метод get,
    который возвращает элемент по индексу
  • метод insert,
    который вставляет элемент по указанному индексу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить