- •Структуры и алгоритмы
- •ВвЕдение
- •Необходимые понятия и определения
- •Основные структуры данных
- •Задача сортировки массивов
- •Трудоемкость методов сортировки массивов
- •Задача сортировки последовательностей
- •Теорема о сложности сортировки
- •Задача поиска элементов с заданным ключом
- •Контрольные вопросы
- •Методы сортировки с квадратичной трудоемкостью
- •Метод прямого выбора
- •Алгоритм на псевдокоде
- •Пузырьковая сортировка
- •Алгоритм на псевдокоде
- •Шейкерная сортировка
- •Алгоритм на псевдокоде
- •Контрольные вопросы
- •Метод Шелла
- •Метод прямого включения
- •Алгоритм на псевдокоде
- •Метод Шелла
- •Алгоритм на псевдокоде
- •Контрольные вопросы
- •Быстрые методы сортировки массивов
- •Пирамидальная сортировка
- •Свойства пирамиды
- •Алгоритм на псевдокоде
- •Построение (1, 8)-пирамиды
- •Сортировка
- •Алгоритм на псевдокоде
- •Метод Хоара
- •Алгоритм на псевдокоде
- •Проблема глубины рекурсии.
- •Алгоритм на псевдокоде
- •Контрольные вопросы
- •Работа с линейными списками
- •Указатели. Основные операции с указателями
- •Основные операции с линейными списками
- •Методы сортировки последовательностей
- •Метод прямого слияния
- •Алгоритм на псевдокоде
- •Алгоритм на псевдокоде
- •Цифровая сортировка
- •Алгоритм на псевдокоде
- •Алгоритм на псевдокоде
- •Контрольные вопросы
- •Двоичный поиск в упорядоченном массиве
- •Алгоритм двоичного поиска
- •Алгоритм на псевдокоде
- •Обозначим
- •Найден – логическая переменная, в которой будем отмечать факт успешного завершения поиска.
- •Алгоритм на псевдокоде
- •Контрольные вопросы
- •Сортировка данных с произвольной структурой
- •Сравнение данных произвольной структуры
- •Сортировка по множеству ключей. Индексация
- •Алгоритм на псевдокоде (на примере пузырьковой сортировки)
- •Индексация через массив указателей
- •Контрольные вопросы
- •Хэширование и поиск
- •Понятие хэш-функции
- •Алгоритм на псевдокоде
- •Метод прямого связывания
- •Метод открытой адресации
- •Алгоритм на псевдокоде
- •Контрольные вопросы
- •Правила выполнения лабораторных работ
- •Лабораторная работа 1
- •Лабораторная работа 2
- •Лабораторная работа 3
- •Лабораторная работа 4
- •Лабораторная работа 5
- •Лабораторная работа 6
- •Контрольная работа правила выполнения и оформления Контрольной работы
- •Правила выбора варианта Задания для контрольной работы одинаковы для всех студентов. Начальные данные выбираются индивидуально в зависимости от задания в контрольной работе.
- •Вопросы к зачету правила выставления зачета
- •Рекомендуемая литература
- •Псевдокод для записи алгоритмов
Правила выбора варианта Задания для контрольной работы одинаковы для всех студентов. Начальные данные выбираются индивидуально в зависимости от задания в контрольной работе.
Используя в качестве массива набор из 8 букв своих фамилии, имени, отчества, определить на каждом шаге в методе прямого выбора номера перемещаемых элементов.
Используя в качестве массива набор из 8 букв своих фамилии, имени, отчества, определить на каждом шаге в методе шейкерной сортировки левую и правую границы сортируемой части массива (L и R).
Используя в качестве массива набор из 8 букв своих фамилии, имени, отчества провести сортировку массива методом Шелла. Последовательность шагов h1=1, h2=2.
Используя в качестве массива набор из 10 букв своих фамилии, имени, отчества, построить пирамиду и отсортировать массив.
Провести сортировку последовательности из 15 букв своих фамилии, имени, отчества методом прямого слияния.
Составить произвольную последовательность из 12 трехзначных чисел в четверичной системе счисления и отсортировать ее с помощью цифровой сортировки.
Провести быстрый поиск (2 версии) буквы «Е» (русс.) в массиве из 15 букв своих фамилии, имени, отчества.
Построить хэш-таблицу методом квадратичных проб для всех букв своих фамилии, имени, отчества.
Вопросы к зачету правила выставления зачета
Для допуска к зачету необходимо выполнить и защитить все лабораторные работы и контрольную работу.
Для получения зачета требуется ответить на три вопроса из следующих разделов.
ОПРЕДЕЛЕНИЯ И ПОHЯТИЯ
1. Серия
2. Статистические данные, примеры
3. Динамические данные, примеры
4. Простые типы данных
5. Составные типы данных
6. Массив
7. Запись
8. Объединение
9. Прямой (случайный) доступ
10. Последовательный доступ
11. Сортировка
12. Прямой и обратный порядок сортировки
13. Цель сортировки
14. Ключ сортировки
15. Устойчивость сортировки
16. Трудоемкость сортировки (как определяется)
17. К-сортировка, в каком методе используется
18. Индексация данных
19. Фильтрация данных
20. Двоичный поиск (идея)
21. Трудоемкость двоичного поиска
22. Определение пирамиды
23. Свойства пирамид
24. Нижний предел трудоемкости сортировки (следствие)
25. Медиана, в каком методе используется
26. Рекурсия, преимущества и недостатки
27. Указатель
28. Динамическая память
29. Список
30. Стек (простой список)
31. Очередь
32. Методы сортировки массивов (назвать)
33. Методы сортировки списков (назвать)
33. Трудоемкость рассмотренных методов сортировки
34. Хеширование
35. Хеш-функция
36. Коллизия (конфликт)
37. Проба (при хешировании)
АЛГОРИТМЫ
1. Метод прямого выбора
2. Пузырьковая сортировка
3. Шейкерная сортировка
4. Метод прямого включения
5. Метод Шелла
6. Пирамидальная сортировка
7. Метод Хоара
8. Метод прямого слияния
9. Цифровая сортировка
10. Построение индексного массива
11. Двоичный поиск
16. Формирование списка (очереди)
17. Исключение элемента из списка (очереди)
18. Обработка списка (очереди)
19. Перемещение элемента из списка в очередь
20. Соединение очередей
21. Вычисление хеш-адреса строки
22. Метод прямого связывания
23. Метод линейных проб
24. Метод квадратичных проб
ЗАДАЧИ
Привести пример массивов, в которых имеется 2 и 3 серии.
В массиве (А,Л,Р,П,Д,К,Я,З) определить медиану.
Являются ли данные последовательности пирамидами?
a1=2, a2=6, a3=5, a4=7, a5=2, a6=2, a7=12, a8=10
a3=2, a4=6, a5=5, a6=7, a7=2, a8=2, a9=12, a10=10
Какова глубина рекурсии в методе Хоара при сортировке данного массива? (1,2,3,4,5,6,7,8)
Методом цифровой сортировки отсортировать массив
(41, 73, 90, 52, 93, 53, 31, 41)
Построить индексный массив, сортирующий массив
(71, 93, 30, 152, 53, 23, 39, 101)
Построить хэш-таблицу методом прямой адресации, используя все буквы фамилии, имени, отчества.
Построить хэш-таблицу методом линейных проб, используя все буквы фамилии, имени, отчества.
Отсортировать методом пузырьковой сортировки 8 букв своих фамилии, имени, отчества.
Привести пример массивов, в которых имеется 4 и 1 серии.
В массиве (Р,Л,Р,П,Л,К,Ф,З) определить медиану.
Являются ли данные последовательности пирамидами?
a1=3, a2=7, a3=9, a4=17, a5=2, a6=2, a7=2, a8=1
a3=2, a4=6, a5=5, a6=17, a7=22, a8=32, a9=52, a10=100
Какова глубина рекурсии в методе Хоара при сортировке данного массива? (8,7,6,5,4,3,2,1)
Методом цифровой сортировки отсортировать массив
(71, 43, 190, 82, 3, 23, 1, 4)
Построить индексный массив, сортирующий массив
(11, 63, 38, 15, 513, 3, 79, 10)
Определить последовательность шагов в методе Шелла для массива с 20 элементами.
Построить индексный массив, сортирующий массив в обратном порядке (71, 93, 30, 152, 53, 23, 39, 101)
Построить хэш-таблицу методом прямой адресации, используя все буквы фамилии, имени, отчества.
Построить хэш-таблицу методом линейных проб, используя все буквы фамилии, имени, отчества.
Отсортировать методом пузырьковой сортировки 8 букв своих фамилии, имени, отчества.
Привести пример массивов, в которых имеется 2 и 5 серий.
В массиве (Л,Д,Ж,Э,Л,К,С,З) определить медиану.
Являются ли данные последовательности пирамидами?
a1=3, a2=7, a3=9, a4=17, a5=2, a6=2, a7=2, a8=1
a3=2, a4=6, a5=5, a6=17, a7=22, a8=32, a9=52, a10=100
Построить хэш-таблицу методом прямой адресации, используя все буквы фамилии, имени, отчества.
Построить хэш-таблицу методом линейных проб, используя все буквы фамилии, имени, отчества.