- •Введение
- •1. Технология проектирования и реализации коллекций данных.
- •1.1. Постановка задачи.
- •1.2. Разработка структур данных и алгоритмов
- •1.3. Кодирование
- •1.4. Отладка и тестирование
- •1.5. Сопровождение
- •2. Лабораторная работа «Сортировка коллекции»
- •2.1. Алгоритмы внутренней сортировки
- •2.2. Задание к лабораторной работе
- •2.1.1. Варианты заданий
- •2.1.2. Методические указания к выполнению задания
- •2.3. Контрольные вопросы и упражнения.
- •3. Лабораторная работа «Коллекция данных - список».
- •3.1. Структуры списков
- •3.2. Задание к лабораторной работе
- •3.2.1. Варианты заданий:
- •3.2.2. Методические указания к выполнению задания
- •3.3. Контрольные вопросы и упражнения.
- •4. Лабораторная работа «Коллекция данных - дерево поиска».
- •4.1. Структуры bst - деревьев
- •4.2. Задание к лабораторной работе
- •4.2.1. Варианты задания
- •4.2.2. Методические указания к выполнению задания:
- •4.3. Контрольные вопросы и упражнения.
- •5. Лабораторная работа «Коллекция данных - сбалансированное дерево поиска»
- •5.1. Структуры сбалансированных деревьев
- •5.2. Задание к лабораторной работе
- •5.2.1. Варианты заданий:
- •5.2.2. Методические указания к выполнению задания
- •5.3. Контрольные вопросы и упражнения.
- •6. Лабораторная работа «Коллекция данных - хеш – таблица»
- •6.1. Функции хеширования
- •6.2. Разрешение коллизий и структуры хеш-таблиц
- •6.3. Трудоёмкость операций
- •6.4. Задание к лабораторной работе
- •6.4.1. Варианты заданий:
- •6.4.2. Методические указания к выполнению задания
- •6.5. Контрольные вопросы и упражнения.
- •Литература
- •Приложение a: Псевдокод. Основные правила и соглашения псевдокода
- •Алгоритм сортировки Шелла
- •Алгоритм пирамидальной сортировки
- •Рекурсивный алгоритм сортировки разделением
- •Итеративный алгоритм сортировки разделением
- •Рекурсивный алгоритм сортировки слиянием
- •Итеративный алгоритм сортировки слиянием
- •Рекурсивный алгоритм поразрядной msd-сортировки
- •Итеративный алгоритм поразрядной lsd-сортировки
- •Итеративный алгоритм вставки элемента в bst – дерево
- •Рекурсивный алгоритм удаления элемента из bst – дерева
- •Алгоритм вставки элемента в корень bst – дерева
- •Алгоритм поиска предыдущего по значению ключа узла bst – дерева
- •Алгоритм поиска k –го по значению ключа узла в bst – дереве
- •Алгоритм разбиения дерева на части
- •Алгоритм удаления из bst-дерева на основе объединения поддеревьев
- •Алгоритм объединения bst – деревьев
- •Алгоритм удаления элемента из рандомизированного дерева
- •Алгоритм вставки элемента в avl-дерево
- •Рекурсивный алгоритм вставки элемента в rb – дерево
- •Итеративный алгоритм вставки элемента в rb – дерево
- •Итеративный алгоритм удаления элемента из rb – дерева
- •Алгоритм вставки элемента в 2-3 - дерево
- •Алгоритм удаления элемента из 2-3 - дерева
- •Приложение д Алгоритмы операций для хеш-таблицы с открытой адресацией Алгоритм вставки элемента
- •Алгоритм удаления элемента
- •Алгоритм поиска элемента
6.4. Задание к лабораторной работе
-
Спроектировать, реализовать и провести тестовые испытания АТД «Хеш-таблица» для коллекции, содержащей объекты произвольного типа. Тип объектов задаётся клиентской программой.
АТД «Хеш-таблица» представляет ассоциативное, неупорядоченное множество элементов, доступ к которым выполняется с использованием ключа.
Коллекция проектируется в двух вариантах:
-
АТД «Хеш-таблица с цепочками коллизий»,
-
АТД «Хеш-таблица с открытой адресацией»,
Интерфейс АТД «Хеш-таблица» включает следующие операции:
-
опрос размера таблицы,
-
опрос количества элементов в таблице,
-
опрос пустоты таблицы,
-
очистка таблицы,
-
поиск элемента по ключу,
-
вставка элемента по ключу,
-
удаление элемента по ключу.
-
итератор для доступа к элементам в таблице с операциями:
-
установка на первый элемент в таблице,
-
переход к следующему элементу в таблице,
-
проверка окончания просмотра,
-
доступ по чтению и записи к данным текущего элемента.
Для тестирования коллекций интерфейс АТД «Хеш-таблица» включает дополнительные операции:
-
вывод структуры хеш-таблицы на экран,
-
опрос числа проб, выполненных операцией.
-
Выполнить отладку и тестирование всех операций АТД «Хеш-таблица с цепочками коллизий» и АТД «Хеш-таблица с открытой адресацией» с помощью меню операций.
-
Получить экспериментальную оценку качества хеш-функции 2, усреднённую по нескольким экспериментам.
-
Выполнить сравнительное тестирование средней трудоёмкости операций поиска, вставки и удаления для коллекций «Хеш-таблица с цепочками коллизий», и «Хеш-таблица с открытой адресацией» в зависимости от коэффициента заполнения α.
-
Провести сравнительный анализ теоретических и экспериментальных показателей трудоёмкости операций.
-
Составить отчёт по лабораторной работе. Отчёт должен содержать следующие пункты:
-
пункты 1 – 5 (см. раздел 2.2),
-
описание методики получения экспериментальной оценки 2 и полученная оценка 2, усреднённая по нескольким экспериментам.
-
описание методики тестирования трудоёмкости операций,
-
таблицы и графики с полученными оценками трудоёмкости операций. Должны быть приведены графики трудоёмкости для операций поиска, вставки и удаления для АТД «Хеш-таблица с цепочками коллизий» и АТД «Хеш-таблица с открытой адресацией»,
-
сравнительный анализ теоретических и экспериментальных оценок эффективности операций АТД,
-
выводы,
-
список использованной литературы,
-
приложение с текстами программ:
-
полное определение классов и текстов методов класса,
-
текст программы получения оценки 2,
-
текст программы тестирования трудоёмкости операций АТД.
6.4.1. Варианты заданий:
Тип ключа - строка текста произвольной длины.
Преобразование строки - конкатенация битовых образов кодов символов.
Метод хеширования - модульный.
Метод разрешения коллизий – двойное хеширование.
Тип ключа - вещественное число на интервале [-10 000.00 , +10 000.00].
Метод хеширования - мультипликативный.
Метод разрешения коллизий - квадратичный.
Тип ключа - целое число на интервале [0 , +1 000 000 000].
Метод хеширования – выбор цифр.
Метод разрешения коллизий - линейное хеширование.
Тип ключа - строка текста произвольной длины.
Метод преобразования числа – формирование значения числа из кодов символов по схеме Горнера.
Метод хеширования – мультипликативный.
Метод разрешения коллизий - линейное хеширование.
Тип ключа - вещественное число на интервале [100 000.00 , +150 000.00].
Метод хеширования - модульный.
Метод разрешения коллизий - квадратичное хеширование.
Тип ключа - строка текста произвольной длины.
Преобразование строки - конкатенация битовых образов символов.
Метод хеширования - мультипликативный.
Метод разрешения коллизий - квадратичный.
Тип ключа - вещественное число на интервале [-5 000.000 , +5 000.000].
Метод хеширования - свёртка.
Метод разрешения коллизий - квадратичный.
Тип ключа – 12-значное натуральное число.
Метод хеширования - свёртка, комбинированная с выбором цифр.
Метод разрешения коллизий - линейный.