В процессе такого поиска границы промежутка можно сдвинуть друг к другу. После каждого сравнения сдвигается верхняя, либо нижняя граница промежутка. Промежутком данных или отрезком является отрезок индексов от 1 до N.
Пусть значение наименьшего индекса в исходной последовательности равно А, а значение наибольшего индекса – В. Если разделить рассматриваемый интервал [A,B] пополам, получится некоторое значение С. Сравниваем X[C] с заданным значением Р. Если X[C]>P, то элемент следует искать для B = C – 1, если X[C]<P, то для А = С + 1. Следует повторять эти действия до тех пор, пока А и В не совпадут. Проверить условие X[А]=P, и по результатам проверки может быть сформирован результат.
Чтобы сбалансировать количество возможных вычислений в обоих случаях, переменную С выбирают так, что отрезки значений А-С и В-С должны быть близки.
Словесный алгоритм поиска имеет следующий вид:
- Вычислить С.
- Сравнить X[C] с переменной Р.
- Определить А и В.
- Если А и В не совпадают, повторить с п. 1.