Информационное обеспечение систем управления

       

Бинарный поиск


Записи в файле можно упорядочить, например, по возрастанию или убыванию значения первичного ключа соответственно:

Бинарный поиск

В этом случае можно построить более эффективные алгоритмы поиска, поскольку после сравнения значения

Бинарный поиск
(условие поиска Q:
Бинарный поиск
) со значением ключа
Бинарный поиск
-й записи файла ясно, в какой части файла продолжать поиск [17].

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

Поиск по равенству

Бинарный поиск
. Алгоритм поиска заключается в следующем. Файл считают упорядоченным по возрастанию ключа. Сравнивают значения ключа средней записи
Бинарный поиск
, где
Бинарный поиск
со значением
Бинарный поиск
. Если
Бинарный поиск
 то поиск удачный и алгоритм заканчивает свою работу. Если
Бинарный поиск
, то для продолжения поиска выбирается средняя запись правой половины файла:
Бинарный поиск
, где

Бинарный поиск

Если

Бинарный поиск
, то для продолжения поиска выбирается средняя запись левой половины файла:
Бинарный поиск
, где

Бинарный поиск

Процесс деления интервала пополам продолжается до тех пор, пока не будет найдена искомая запись (

Бинарный поиск
), либо пока в интервале не останется всего одна запись. Если значение ее ключа не удовлетворяет условию поиска, то поиск неудачный и искомой записи в файле нет.

Бинарный поиск можно выполнять, работая с блоками файла, а не с записями. При считывании блока в оперативную память поиск записи в блоке может быть последовательным. В этом случае в качестве характеристик блока используются граничные значения ключей записей, находящихся в блоке.

Поиск по интервалу значений

Бинарный поиск
. Алгоритм поиска следующий. Вначале выполняется бинарный поиск записи, значение ключа которой удовлетворяет условию
Бинарный поиск
, либо, если такой записи нет в файле, то значение ключа которой является наиболее близким к
Бинарный поиск
 по условию
Бинарный поиск
. Далее последовательно читаются записи в блоках файла до тех пор, пока не будет нарушено условие:
Бинарный поиск
.



Содержание раздела