Алгоритм бинарного поиска является более эффективным способом поиска определенного элемента в отсортированном списке. В отличие от линейного поиска, который проверяет элементы последовательно, бинарный поиск делит список пополам и сравнивает целевой элемент со средним элементом. Этот процесс повторяется до тех пор, пока целевой элемент не будет найден или диапазон поиска не станет пустым.
Как это работает
- Начните со всего отсортированного списка.
- Найти средний элемент текущего диапазона поиска.
- Сравните средний элемент с целевым значением.
- Если средний элемент равен целевому значению, поиск выполнен успешно.
- Если средний элемент больше целевого, поиск осуществляется в левой половине диапазона.
- Если средний элемент меньше целевого, ищите в правой половине диапазона.
- Повторяйте шаги 2-6, пока не будет найден целевой элемент или диапазон поиска не станет пустым.
Пример
Давайте рассмотрим отсортированный список целых чисел и хотим найти число 34 с помощью двоичного поиска.
Отсортированный список: {12, 23, 34, 45, 56, 67, 89, 90}
- Начните со всего списка.
- Средний элемент: 56(позиция 4). Сравните с 34.
- 56 больше 34. Поиск в левой половине.
- Новый средний элемент: 23(позиция 1). Сравните с 34.
- 23 меньше 34. Поиск в правой половине.
- Новый средний элемент: 45(позиция 3). Сравните с 34.
- 45 больше 34. Поиск в левой половине.
- Новый средний элемент: 34(позиция 2). Цель найдена.
Пример кода на С++
В данном примере binarySearch
функция используется для поиска числа 34 в отсортированном списке целых чисел. Результатом будет позиция 34 в списке(позиции начинаются с 0) или -1, если номер не найден.