Лабораторная работа № 8
Тема: Программирование с использованием алгоритмов сортировки
Цель: Изучить быстрые и медленные алгоритмы сортировки. Научиться разрабатывать программы с использованием динамических структур на смежной памяти.
Ход работы
В задании необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - сортировка списка двумя алгоритмами (в соответствии с вариантом). Сначала в программе должен вводиться размер списка (целое число), а сам список создается в виде динамического массива структур (использовать функции malloc, calloc, free). Ввод одной записи осуществляется в одной строке в соответствии с форматом.
Описание структур приводится после вариантов задания. Выбор алгоритма осуществляется пользователем. Поле и направление сортировки выбирает разработчик (смотреть раздел дополнительно после вариантов задания). Учитывать, что названия книг, наименования товаров, тексты сообщений могут состоять из нескольких слов и заключаются в двойные кавычки. Варианты заданий:
1 |
СООБЩЕНИЕ 1 |
Вставки |
Шелла |
20 баллов |
2 |
КНИГА |
Пузырек |
Хоора |
20 баллов |
3 |
ТОВАР |
Минимаксный |
Флойда |
20 баллов |
4 |
СООБЩЕНИЕ 2 |
Перечисления |
Шелла |
20 баллов |
5 |
СТУДЕНТ |
Вставки |
Хоора |
20 баллов |
6 |
СООБЩЕНИЕ 1 |
Пузырек |
Флойда |
20 баллов |
7 |
КНИГА |
Минимаксный |
Шелла |
20 баллов |
8 |
ТОВАР |
Перечисления |
Хоора |
20 баллов |
9 |
СООБЩЕНИЕ 2 |
Вставки |
Флойда |
20 баллов |
10 |
СТУДЕНТ |
Пузырек |
Шелла |
20 баллов |
11 |
СООБЩЕНИЕ 1 |
Минимаксный |
Хоора |
20 баллов |
12 |
КНИГА |
Перечисления |
Флойда |
20 баллов |
13 |
ТОВАР |
Вставки |
Шелла |
20 баллов |
14 |
СООБЩЕНИЕ 2 |
Пузырек |
Хоора |
20 баллов |
15 |
СТУДЕНТ |
Минимаксный |
Флойда |
20 баллов |
ДОПОЛНИТЕЛЬНО:
Реализация выбора направления сортировки премируется 10 баллами.
Реализация выбора поля сортировки премируется 10 баллами.
Реализация выбора алгоритма, направления и поля сортировки через параметры командной строки премируется 10 баллами.
Параметры командной строки должны быть следующими:
a:скорость - алгоритм сортировки (slow - медленный, fast - быстрый);
d:направление - направление сортировки (inc - по возрастанию, dec - по убыванию);
f:поле - поле сортировки (1 - первое, 2 - второе и т.д.).
СТУДЕНТ:
фамилия, имя, отчество (строки по 15 символов);
курс (целое число от 1 до 5);
средний балл (вещественное число от 1 до 10).
Формат ввода: Фамилия Имя Отчество [курс], средний балл
КНИГА:
фамилия и инициалы автора (строка 15 символов);
название книги (строка 20 символов);
год издания (целое положительное четырехзначное число);
количество страниц (целое положительное число).
Формат ввода: код ISBN: Фамилия И. О. «Название», год, кол-во страниц
ТОВАР:
наименование товара (строка 15 символов);
единицы измерения (строка 5 символов);
цена (вещественное число с двумя знаками после запятой);
количество (целое положительное число).
Формат ввода: «Наименование» «Ед. изм.», цена, количество
СООБЩЕНИЕ 1:
адреса отправителя и получателя (целые положительные трехзначные числа);
текст сообщения (строка 50 символов);
дата пересылки (в формате ДД.ММ.ГГГГ).
Формат ввода: Отправитель - Получатель «текст» дата
СООБЩЕНИЕ 2:
номер устройства отправителя (целое положительное четырехзначное число);
текст сообщения (строка 50 символов);
время получения (в формате ЧЧ:ММ:СС).
Формат ввода: Номер устройства «текст сообщения» время
Контрольные вопросы
1. Что такое сортировка?
2. Приведите классификацию алгоритмов сортировки.
3. Как оценивается скорость сортировки медленными и быстрыми алгоритмами?
4. Поясните сущность и опишите алгоритм сортировки вставками.
5. Поясните сущность и опишите алгоритм сортировки пузырьком.
6. Поясните сущность и опишите минимаксный алгоритм сортировки.
7. Поясните сущность и опишите алгоритм сортировки перечислениями.
8. Поясните сущность и опишите алгоритм сортировки Шелла.
9. Поясните сущность и опишите алгоритм сортировки Хоора.
10. Поясните сущность и опишите алгоритм сортировки Флойда.