Лекция: Блочный поиск

Снова вспомним пример с записной книж­кой. Пусть в вашей записной книжке имеется алфавитный индекс в виде вырезанной «лесен­ки» или в виде букв вверху страницы. Несколькостраниц, помеченных одной буквой, назовем блоком. Имеется блок «А», блок «Б» и т. д. до блока «Я».

Индекс – это часть ключа поиска (например, первая буква).

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

1) с помощью алфавитного индекса выбирается блок с нужной буквой;

2) внутри блока поиск производится путем последовательного перебора.

Большинство книг в начале или в конце текста содержат оглавления: список названий разделов с указанием страниц, с которых они начинают­ся. Разделы – это те же блоки. Поиск нужной информации в книге начи­нается с просмотра оглавления, с дальнейшим переходом к нужному раз­делу, который затем просматривается последовательно. Очевидно, это тот же блочно-последовательный методпоиска.

Списки с указанием на блоки данных называются списками указателей.

Разбиение данных на блоки может быть многоуровневым. В толстых словарях блок на букву «А» разбивается, например, на блоки по второй букве: блок от «АБ» до «АЖ», следующий от «AЗ» до «АН» и т.д. Такой порядок называется лексикографическим.

В поисковом множестве с многоуровневой блочной структурой происходит поиск методом спуска:сначала отыскивается нужный блок первого уровня, затем второго и т.д. Внутри блока последнего уровня может про­исходить либо последовательный поиск (если данных в нем относительно немного), либо оптимизированный поиск типа половинного деления. По­иску методом спуска часто помогают многоуровневые списки указателей.

еще рефераты
Еще работы по информатике