- •Введение
- •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. Методические указания к выполнению задания
-
Коллекции «Хеш-таблица с цепочками коллизий» и «Хеш-таблица с открытой адресацией» разрабатываются, как отдельные шаблонные классы-контейнеры. Шаблонный класс «Хеш-таблица с цепочками коллизий» для организации цепочек использует внешний шаблонный класс «Список».
-
Параметрами шаблона являются тип ключа, тип данных.
-
Размер хеш-таблицы вычисляется конструктором коллекции в зависимости от заданного количества элементов с учётом типа хеш-таблицы, метода хеширования, указанного в варианте задания, и рекомендуемой величины α.
-
Для реализации операций АТД, рекомендуется использовать алгоритмы, приведённые в приложении 5.
-
Для тестирования разработанного класса – контейнера разрабатываются две программы - программа тестирования операций через меню, и программа тестирования трудоёмкости операций поиска, вставки и удаления.
-
Тестирование операций через меню выполняется для небольшого размера таблицы (до 10 элементов). Тип данных, хранящихся в нём, задаётся с клавиатуры перед началом тестирования. После выполнения операции необходимо выводить на экран содержимое структуры хеш-таблицы с помощью операции вывода её структуры. При выводе структуры следует отражать состояние, как свободных, так и занятых позиций хеш-таблицы, содержимое цепочек коллизий.
-
Для получения оценки 2 использовать количество ключей, минимум в 20 раз превышающее размер хеш-таблицы.
-
Тестирование трудоёмкости операций коллекций «Хеш-таблица с цепочками коллизий» и «Хеш-таблица с открытой адресацией» выполняется в соответствии с технологией тестирования, изложенной в разделе 1.4.
-
Перед тестированием эффективности операций для обеих коллекций задаётся количество элементов, для хранения которых предназначена хеш-таблица. В качестве исходных данных для тестирования задаётся коэффициент заполнения α. Для коллекции «Хеш-таблица с цепочками коллизий» изменение α задаётся неравенством 0,1 α10. Для коллекции «Хеш-таблица с открытой адресацией» изменение α задаётся неравенством 0,1 α1. После тестирования на экран выводится коэффициент заполнения и полученные оценки трудоёмкости для операций поиска, вставки и удаления элементов.
6.5. Контрольные вопросы и упражнения.
-
Приведите размер хеш-таблицы с открытой адресацией, предназначенной для хранения 200 элементов, если она использует мультипликативный метод хеширования, модульный метод хеширования.
-
Приведите вид первоначально пустой хеш-таблицы с цепочками коллизий после вставки ключей 1, 89, 45, 76, 2, 13, 33, 4. Хеш-таблица предназначена для хранения 20 элементов, использует модульное хеширование.
-
Приведите вид первоначально пустой хеш-таблицы с открытой адресацией после вставки ключей 1, 89, 45, 76, 2, 13, 33, 4. Хеш-таблица предназначена для хранения 10 элементов, использует модульное хеширование.
-
Приведите соответствующий строке JKRSDS ключ, полученный методом конкатенация битовых образов для хеш-таблицы размером 1000.
-
Приведите соответствующий числу 1263454756 ключ, полученный методом свертки для хеш-таблицы размером 1000.
-
Какая последовательность ячеек получается в результате квадратичного зондирования, если h (k) = k mod 11 и k = 19.
-
Какая последовательность зондируемых ячеек получается в результате двойного хеширования: h (k) = k mod 11, h1(k) = 1 + (k mod 10) и k = 19.