Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации 2часть / Лекция_30_Хеширование.ppt
Скачиваний:
27
Добавлен:
11.05.2015
Размер:
183.81 Кб
Скачать

Метод блоков

Используется массив одномерных массивов (блоков)

Type Tblok=array[1..P] of Tinf;

Var H:array[0..M-1] of Tblok;

H1,H2:array[0..M-1] of Tblok;

блоки переполнения

Размещаются элементы следующим образом:

Вначале обычная функция i:=Key mod M находит номер блока и размещает в H[i] элемент (в конце блока).

Если i-й блок переполнен, то элемент помещается в очередной блок переполнения H1[i].

Этот способ обычно используется при хранении данных на файле. Запись и чтение в (из) файла осуществляется поблочно. Это позволяет значительно ускорить поиск, т.к. чтение из файла по

07/02/19

31

одной записи медленнее, чем сразу блоком.

 

Контрольные вопросы

Для чего используется хеширование.

Изложите алгоритм хеширования, что такое хеш-таблица, функция хеширования и алгоритм разрешения конфликтов.

Какие имеются способы хеширования.

Напишите класс, реализующий алгоритм хеширования на основе таблицы из стеков.

07/02/19

32

Задача на экзамен

№16

Составить программу, в которой организовать ввод массива n записей с произвольным распределением ключей {a[i].Inf} (Inf.F - фамилия; Inf.к - учетный номер) из StringGrid1 в хеш- таблицу размера M>=n методом Add и организовать поиск записи в хеш-таблице по заданному ключу x методом Read.

Значения М, х ввести из окон Edit, найденную фамилию вывести в окно Edit.

В отдельном модуле написать класс для работы с хеш- таблицей на основе массива из стеков, который включает конструктор Create(M0), а также два метода Add(Inf:Tinf) и Read(Key:Word):Tinf.

07/02/19

33