Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
197251_0AD1F_lekcii_po_discipline_informacionno...doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
5.04 Mб
Скачать

Лекция 11. Методы поиска и индексирования данных Последовательный поиск [2]

Последовательный поиск заключается в последовательной проверке всех записей файла на их соответствие условию поиска Q [24]. Записи, значения полей которых удовлетворяют условию Q, выдаются в качестве результата поиска.

Поиск по равенству К = а, где К – значение ключевого поля. Алгоритм поиска заключается в последовательном просмотре записей файла и проверке условия К = а. Если запись найдена, то алгоритм заканчивает свою работу (удачный поиск). В противном случае поиск заканчивается просмотром последней записи файла (неудачный поиск).

Если ключ К с равной вероятностью может принимать любое из заданных значений, то в среднем для выполнения поиска требуется время

Поиск по интервалу значений ключа а ≤ К ≤ b. Алгоритм поиска заключается в последовательном просмотре всех записей файла, так как зарание неизвестно, какие записи удовлетворяют условию Q, а какие не удовлетворяют.

Требуемое время на поиск

Поиск по множеству значений K = ai, i = 1, 2, ..., п, где ai принимает значения из множества {а1, а2, ..., аi, ..., ап}. Алгоритм поиска заключается в последовательном просмотре всех записей файла, при чем для каждой записи осуществляется п проверок по равенству: К = аi, где i = 1, 2, ..., п.

Основным достоинством последовательного поиска данных при последовательной организации файла является простота его реализации.

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

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

В этом случае можно построить более эффективные алгоритмы поиска, поскольку после сравнения значения а (условие поиска Q: К = а) со значением ключа i-й записи файла ясно, в какой части файла продолжать поиск [24].

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

Поиск по равенству К = а. Алгоритм поиска заключается в следующем. Файл считают упорядоченным по возрастанию ключа. Сравнивают значения ключа средней записи Ki, где i = nз.ф./2 со значением а. Если К = а то поиск удачный и алгоритм заканчивает свою работу. Если Кi < а, то для продолжения поиска выбирается средняя запись правой половины файла: зi, ..., зj, ..., зпз., где

Если Кi > а, то для продолжения поиска выбирается средняя запись левой половины файла: з1, з2, ..., зj, ..., зi, где

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

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

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