Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Индексированные файлы




Еще одним распространенным способом организации файла записей является поддержание файла в отсортированном по значениям ключей порядке. В этом случае файл можно просматривать как словарь или телефонный справочник, когда просматриваются лишь заглавные слова или фамилии на каждой странице. Чтобы облегчить процедуру поиска, можно создать второй файл, называемый разреженным индексом, который состоит из пар (x, b), где x – значение ключа, а b – физический адрес блока, в котором значение ключа первой записи равняется х. Разреженный индекс отсортирован по значениям ключей.

На рис. 51 показан файл с информацией и соответствующий ему файл разреженного индекса.

 

Рис. 51 – Файл и его разреженный индекс

 

Предполагается, что три записи основного файла или три пары индексного файла помещаются в один блок. Записи основного файла представлены только значениями ключей, которые в данном случае являются целочисленными величинами. Чтобы найти запись с заданным ключом х, нужно сначала просмотреть индексный файл, отыскивая в нем пару (x, b). В действительности ищется наибольшее z, такое, что и далее находится пара (z, b). В этом случае ключ х оказывается в блоке b, если такой ключ вообще присутствует в основном файле.

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

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

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

Если блок также заполнен или если является последним блоком (i=m), из файловой системы нужно получить новый блок. Новая запись вставляется в этот новый блок, который должен размещаться вслед за блоком Затем используется процедура вставки в индексном файле записи для нового блока.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных