
- •Лабораторные работы по программированию "Структуры и алгоритмы обработки данных"
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Методические указания по выполнению задания (окончание)
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Литература
- •Хранение данных в файлах
- •Простая организация данных
- •Ускорение операций с файлами
- •Хешированные файлы
- •Хешированные файлы (окончание)
- •Индексированные файлы
- •Индексированные файлы (окончание)
- •Несортированные файлы с плотным индексом
- •Внешние деревья поиска
- •Разветвленные деревья поиска
- •Создание пустого б-дерева
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (окончание)
- •Сравнение методов
- •Формат атд
- •Формат атд (окончание)
- •Вариант 8:
- •Атд "Хеш-таблица с цепочками коллизий"
- •Атд "Хеш-таблица с цепочками коллизий" (окончание)
- •Атд "Хеш-таблица с открытой адресацией"
- •Атд "Хеш-таблица с открытой адресацией" (окончание)
- •Атд "Итератор"
- •Описание методики тестирования хеш-функции (определение статистики c2)
- •Описание хеш-функций
- •Результаты тестирования хеш-функции
- •Описание методики тестирования трудоемкости операций
- •Описание методики тестирования трудоемкости операций (окончание)
- •Сравнительный анализ теоретических и экспериментальных оценок эффективности операций
- •Литература
Атд "Хеш-таблица с открытой адресацией"
При открытой адресации все элементы хранятся в самой хеш-таблице: каждая ячейка таблицы содержит либо пару ключ-значение, либо NIL в качестве ключа, если элемента нет или DELETED (в ключе), если значение по ключу было удалено. Поиск заключается в том, что по определённому правилу просматриваются элементы таблицы, пока не находится нужный элемент или не заключается, что элемента в таблице нет. При открытой адресации указатели не используются: последовательность просматриваемых ячеек вычисляется. За счет экономии памяти на указателях можно увеличить количество позиций в таблице, что уменьшает число коллизий и сокращает поиск. Чтобы добавить новый элемент, просматриваются ячейки 1:m таблицы, чтобы найти свободное место. Если просматривать все ячейки от 1 до m, то потребуется 0(n) времени. Но при открытой адресации порядок просмотра зависит от ключа. К хеш-функции добавляется второй аргумент - номер попытки (нумерация начинается с 0).
Данные:
Параметры: Нулевой элемент таблицы Константы для квадратичной пробы
Структура данных: STL контейнер элементов типа пара ключ-значение
Операции:
Конструктор: Вход: предполагаемое количество ключей Предусловия: нет Процесс: Очистка таблицы Постусловия: Пустая таблица Выход: нет
Деструктор: Вход: нет Предусловия: нет Процесс: нет Постусловия: нет Выход: нет
Опрос размера таблицы: Вход: Нет Предусловия: нет Процесс: вызов vector<>::size() Постусловия: нет Выход: размер таблицы
Очистка таблицы: Вход: нет Предусловия: нет Процесс: Очистка таблицы Постусловия: таблица пуста Выход: нет
Проверка таблицы на пустоту: Вход: Нет Предусловия: нет Процесс: Просмотр значений всех ключей в таблице Постусловия: нет Выход: false если хотя бы один ключ не равен NIL или DELETED, true иначе
Поиск элемента с заданным ключом: Вход: Ключ элемента Предусловия: Таблица не пуста, нужный ключ есть в таблице Процесс: Поиск элемента в таблице Постусловия: нет Выход: Пара ключ-значение либо нулевой элемент таблицы, если не выполнено предусловие
Атд "Хеш-таблица с открытой адресацией" (окончание)
Включение нового элемента с заданным ключом: Вход: Пара ключ-значение Предусловия: нет Процесс: Вставка элемента в таблицу Постусловия: Таблица с увеличенным на один размером Выход: ключ, -1, если не выполнено постусловие
Удаление элемента с заданным ключом: Вход: Ключ элемента Предусловия: Таблица не пуста, элемент с нужным ключём находится в таблице Процесс: Удаление элемента Постусловия: Таблица с уменьшенным на один размером Выход: нет
Поиск первого элемента в таблице: Вход: нет Предусловия: Таблица не пуста Процесс: Поиск первого элемента Постусловия: нет Выход: Ключ первого элемента в таблице, если не равен NIL или DELETED, -1 иначе.
Поиск следующего элемента: Вход: Ключ элемента, для которого ищется следующий Предусловия: Ключ содержится в таблице Процесс: Поиск следующего Постусловия: нет Выход: Ключ следующего элемента