
Ста: Лабораторная работа №2 - Алгоритмы поиска и сортировки
Версия 2.0, 27 сентября 2013г.
(С) 2012-2013, Зайченко Сергей Александрович, к.т.н, ХНУРЭ, доцент кафедры АПВТ
Правила выполнения лабораторной работы
Лабораторная работа выполняется либо бригадой из 2 человек, либо индивидуально. Если студент претендует на оценку “отлично”, работа должна выполняться полностью индивидуально.
В работе на выбор студента предлагаются варианты трех уровней сложности:
Базовый уровень - оценка в интервале 15-20 баллов.
Углубленный уровень - оценка в интервале 21-25 баллов.
Амбициозный уровень - оценка не менее 25 баллов + бонусные баллы на усмотрение преподавателя.
Реализовывать задачи необходимо исключительно на языке программирования С++.
Работа оценивается не только по корректности функционирования решений задач, но и по культуре оформления исходного кода в читабельном виде, адекватности разбиения решения на модули и функции.
Поскольку одной из основных целей данного курса является изучение способов построения классических структур данных, при реализации задач запрещается использовать готовые библиотечные реализации этих структур.
Защита работы:
устная и короткая без отчета в случае защиты в день лабораторной работы;
с полноценным печатным отчетом и ответами на теоретические вопросы в случае защиты в другие дни.
Неприемлемым нарушением считается копирование исходного кода программ у другой бригады или из любых других источников тем или иным способом. В случае подозрения на плагиат, преподаватель оставляет за собой право не засчитывать решение полностью или частично, в зависимости от уровня понимания бригадой написанного кода. Уровень понимания может устанавливаться дополнительными вопросами к каждому из участников бригады по коду конкретной программы, по использованным в ней конструкциям языка программирования. В качестве проверки на понимание могут быть запрошены некоторые изменения поведения программы, отклоняющиеся от оригинальных условий задачи.
Пропуск лабораторной работы, независимо от уважительности причин, не освобождает от сдачи работы. В случае пропуска следует самостоятельно найти методические указания у сокурсников или преподавателя, согласовать с преподавателем вариант задания, в домашних условиях либо с другой группой выполнить лабораторную работу, подготовить отчет и пройти защиту.
Литература к лабораторной работе
Р. Седжвик “Алгоритмы на С++”:
Глава 6 “Элементарные методы сортировки”.
Глава 7 “Быстрая сортировка”.
Глава 8 “Слияние и сортировка слиянием”.
Глава 12 “Таблицы символов и деревья бинарного поиска” (подразделы 12.1-12.4)
Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн “Алгоритмы. Построение и анализ”, 2 издание:
Глава 7 “Быстрая сортировка”.
Глава 10 “Элементарные структуры данных” (подразделы 10.1-10.3)
А. Ахо, Д. Хопкрофт, Д. Ульман “Структуры данных и алгоритмы”:
Глава 2 “Основные абстрактные типы данных” (подраздел 2.5).
Глава 4 “Основные операторы множеств” (подразделы 4.1-4.6).
Глава 8 “Сортировка”.
Д. Кнут “Искусство программирования”:
Том 3, глава 5, раздел 5.2 “Внутренняя сортировка”.
Том 3, глава 6, раздел 6.1 “Последовательный поиск”.
Том 3, глава 6, раздел 6.2 “Поиск путем сравнения ключей”.
Исходные данные
При решении задач лабораторной работы по желанию можно использовать готовые реализации изложенные в материалах лекций. Перечисленные ниже файлы прилагаются к данным методическим указаниям:
Отображение ( integer_map.hpp,integer_map_vector_impl.cpp).
Множество ( integer_set.hpp,integer_set_list_impl.cpp,integer_set_sorted_list_impl.cpp).
Эти реализации можно использовать непосредственно как готовую библиотеку, либо использовать как начальную точку для собственного решения.
Выдавать данные файлы за собственные решения настоятельно не рекомендуется :)
Решения на основе примитивных массивов и других идеях, не относящиеся к динамическим структурам данных, не будут засчитаны.