Целочисленный двоичный поиск

Материал из Викиконспекты
Перейти к: навигация, поиск

Целочисленный двоичный поиск - алгоритм поиска аргумента для заданного значения монотонной целочисленной функции.

Формулировка задачи

Пусть нам дана монотонная функция, значения которой целые числа. Нам необходимо найти место, где функция будет равна заданному значению.

Выбор границы

Нам должны быть заданы границы, на которых мы ищем индекс заданного значения х.

Правосторонний/левосторонний целочисленный двоичный поиск

Когда мы ищем правосторонним бин. поиском, то он возвращает индекс самого правого вхождения заданного значения х.
Когда же поиск левосторонний, возвращается индекс самого левого вхождения заданного значения х.
Это разделение помогает находить количество подряд идущих равных значений.
Например:
Задан отсортированный массив [1, 2, 2, 2, 2, 3, 5, 8, 9, 11]
Правосторонний поиск двойки выдаст в результате 5, в то время как левосторонний выдаст 2.
От сюда следует, что количество подряд идущих двоек равно длине отрезка [2;5] = 4.

Алгоритм правостороннего/левостороннего поиска

Начнем с левостороннего поиска:

Файл:Cheme.jpg