5145
.pdfМИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Прокопенко Н.Ю.
АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ
Учебно-методическое пособие по подготовке к лекциям, лабораторным занятиям
(включая рекомендации по организации самостоятельной работы),
по выполнению расчетной работы
для обучающихся по дисциплине «Алгоритмы и структуры данных» по направлению подготовки 09.03.03 Прикладная информатика направленность (профиль) Прикладная информатика в экономике
Нижний Новгород
2022
УДК 004.9
Прокопенко Н.Ю. / Алгоритмы и структуры данных: учебно-методическое пособие / Н.Ю. Прокопенко; Нижегородский государственный архитектурно-строительный университет – Нижний Новгород: ННГАСУ, 2022. – 14 с.– Текст: электронный.
В настоящем учебно-методическом пособии по дисциплине «Алгоритмы и структуры данных» даются конкретные рекомендации учащимся для освоения как основного, так и дополнительного материала дисциплины и тем самым способствующие достижению целей, обозначенных в учебной программе дисциплины. Цель учебно-методического пособия это помощь в усвоении лекций, в подготовке к лабораторным занятиям, а также в написании расчетной работы.
Учебно-методическое пособие предназначено для обучающихся в ННГАСУ по дисциплине «Алгоритмы и структуры данных» по направлению подготовки 09.03.03 Прикладная информатика, направленность (профиль) Прикладная информатика в экономике.
© Н.Ю. Прокопенко, 2022
© ННГАСУ, 2022
2
|
Оглавление |
|
|
1. |
Общие положения .......................................................................................................................... |
4 |
|
|
. 1.1 Цели изучения дисциплины и результаты обучения ......................................................... |
4 |
|
|
. 1.2 Содержание дисциплины ..................................................................................................... |
4 |
|
|
. 1.3 Вспомогательная литература для изучения дисциплины ................................................. |
5 |
|
2. |
Методические указания по подготовке к лекциям ..................................................................... |
6 |
|
|
. 2.1 Общие рекомендации по работе на лекциях ...................................................................... |
6 |
|
|
. 2.2 Общие рекомендации при работе с конспектом лекций ................................................... |
6 |
|
|
. 2.3 Контрольные вопросы .......................................................................................................... |
7 |
|
3. |
Методические указания по подготовке к лабораторным занятиям .......................................... |
7 |
|
|
. 3.1 Общие рекомендации по подготовке к лабораторным занятиям ..................................... |
7 |
|
|
. 3.2 Примеры задач для практических занятий ......................................................................... |
8 |
|
.4. Методические указания по организации самостоятельной работы......................................... |
9 |
||
|
. 4.1 |
Общие рекомендации для самостоятельной работы ......................................................... |
9 |
|
. 4.2 |
Темы для самостоятельного изучения .............................................................................. |
11 |
5. |
Методические указания по выполнению расчетной работы (Общие рекомендации) .......... |
11 |
|
|
. 5.1 |
Общие требования к оформлению расчетной работы ..................................................... |
12 |
|
. 5.2 |
Примерные варианты расчетной работы .......................................................................... |
13 |
1. Общие положения
. 1.1 Цели изучения дисциплины и результаты обучения
Основной целью освоения учебной дисциплины «Алгоритмы и структуры данных» являет-
ся достижение результатов обучения, предусмотренных установленным в ОПОП индикаторами достижения компетенций.
Целями освоения данной дисциплины являются изучение характеристик сложности алго-
ритма, знакомство со структурами данных, их представлениями и алгоритмами обработки, без знания которых невозможно современное компьютерное программирование. Рассматриваются различные алгоритмы для работы с массивами, очередями, стеками, списками.
В процессе освоения дисциплины студент должен Знать: основные понятия, методы, алгоритмы, способы решения задач учебной дисциплины
«Алгоритмы и структуры данных»; описание структур хранения данных: вектор, список, сеть, мас-
сив, строки и записи, множества; описание линейных структур: стек, очередь, дек; описание нели-
нейных структур: дерево, лес, граф; алгоритмы внутренней и внешней сортировки;
Уметь: перевести содержательную задачу на математический язык, найти подходящий метод решения задачи, содержательно проанализировать результаты решения и применить их на практи-
ке; компьютерной техникой и информационными технологиями; навыками создания, отладки и тестирования программ.
Владеть: техникой решения задач сортировок и поиска; навыками абстрактных рассуждений,
технологиями использования современных программных средств, работы пользователя и програм-
миста в интегрированных средах, использующих «оконный интерфейс».
Данная дисциплина позволит студентам не только систематизировать полученные теорети-
ческие знания, укрепить исследовательские навыки, но и даст возможность ориентироваться в но-
вом предметном поле информатики.
. 1.2 Содержание дисциплины
Материал дисциплины сгруппирован по следующим разделам:
1. Алгоритмы и данные.
Понятие алгоритма и его свойства. Способы записи алгоритма. Постановка задачи. Постро-
ение модели задачи. Разработка алгоритма. Реализация алгоритма в виде программы. Проверка правильности алгоритма. Простейшая модель вычислений: машина Тьюринга. Определение вре-
менной и емкостной сложности алгоритма. Значение эффективных алгоритмов в вычислительных
задачах. Асимптотики. Оценка сложности алгоритмов для задач сортировок. Детерминированные и недетерминированные алгоритмы. P и NP сложные задачи.
2. Линейные структуры данных.
Алгоритмы поиска и сортировки на линейных структурах данных. Алгоритмы поиска и сортировки на массивах.
Стеки: структуры стека, операции над стеками, применение стеков при разработке прило-
жений. Очереди: структуры очереди, операции над очередью, применение очереди при разработке приложений. Деки.
3. Типы данных. Структуры хранения данных.
Характеристика данных тремя качествами: семантикой, синтаксисом и прагматикой. Дан-
ные скалярных типов. Данные структурных типов. Определение структуры данных. Определение структуры хранения данных. Представление адреса в языках программирования с помощью указа-
телей. Типизированные и не типизированные указатели. Статическая и динамическая память. Век-
тор. Список.
. 1.3 Вспомогательная литература для изучения дисциплины
Для освоения дисциплины обучающийся может использовать печатные и электронные из-
дания и методические материалы, имеющиеся в библиотеке ННГАСУ и/или размещённые в элек-
тронных библиотечных системах (ЭБС), предоставляющих право использования изданий на осно-
вании договорных отношений с университетом, а также иные общедоступные ресурсы сети «Ин-
тернет».
Печатные и электронные издания
1. Белов Владимир Викторович. Алгоритмы и структуры данных : учебник для студентов высших учебных заведений, обучающихся по направлению подготовки 2.09.03.04 "Программная инжене-
рия" (квалификация - Бакалавр). / Белов Владимир Викторович, Чистякова Валентина Ивановна ;
Москва : КУРС : ИНФРА-М, 2020. – 238 с. – ISBN ISBN 978-5-16-011704-1 (ИНФРА-М).
2. Вирт Никлаус. Алгоритмы и структуры данных / Вирт Никлаус, Ткачева Ф. В. ; Никлаус Вирт;
пер. Ф. В. Ткачева. – Саратов : Профобразование, 2019. – 272 с. – URL: URL: http://www.iprbookshop.ru/88753.html. – ISBN ISBN 978-5-4488-0101-3.
3. Мейер, Б.. Инструменты, алгоритмы и структуры данных : учебное пособие. / Мейер, Б. ; Б.
Мейер. – Москва : Интернет-Университет Информационных Технологий (ИНТУИТ), Ай Пи Ар Медиа, 2021. – 540 с. – URL: URL: http://www.iprbookshop.ru/102012.html. – ISBN ISBN 978-5-
4497-0875-5.
5
Методические материалы по дисциплине
1. Любимцев Олег Владимирович. Алгоритмы и структуры данных : учеб.-метод. пособие по под-
гот. к лекц. и практ. занятиям (включая рекомендации по орг. самостоят. работы) для обучающих-
ся по дисциплине "Алгоритмы и структуры данных" по направлению подгот. 09.03.04 Программ-
ная инженерия профиль Разработка программно-информ. систем. / Любимцев Олег Владимирович
; Нижегор. гос. архит.-строит. ун-т. – Нижний Новгород : ННГАСУ, 2018. – 1 CD ROM. – URL: URL: http://catalog.nngasu.ru/MarcWeb2/.
2. Методические указания по подготовке к лекциям
. 2.1 Общие рекомендации по работе на лекциях
Лекция является главным звеном дидактического цикла обучения. Ее цель – формирование основы для последующего усвоения учебного материала. В ходе лекции преподаватель в устной форме, а также с помощью презентаций передает обучаемым знания по основным, фундаменталь-
ным вопросам изучаемой дисциплины.
Назначение лекции состоит в том, чтобы доходчиво изложить основные положения изуча-
емой дисциплины, ориентировать на наиболее важные вопросы учебной дисциплины и оказать помощь в овладении необходимых знаний и применения их на практике.
При подготовке к лекционным занятиям студенты должны ознакомиться с презентаций,
предлагаемой преподавателем, отметить непонятные термины и положения, подготовить вопросы с целью уточнения правильности понимания. Рекомендуется приходить на лекцию подготовлен-
ным, так как в этом случае лекция может быть проведена в интерактивном режиме, что способ-
ствует повышению эффективности лекционных занятий.
. 2.2 Общие рекомендации при работе с конспектом лекций
В ходе лекционных занятий необходимо вести конспектирование учебного материала. Кон-
спект помогает внимательно слушать, лучше запоминать в процессе осмысленного записывания,
обеспечивает наличие опорных материалов при подготовке к лабораторным занятиям, зачету, эк-
замену.
Полезно оставить в рабочих конспектах поля, на которых делать пометки из рекомендован-
ной литературы, дополняющие материал прослушанной лекции, а также подчеркивающие особую важность тех или иных теоретических положений.
В случае неясности по тем или иным вопросам необходимо задавать преподавателю уточ-
6
няющие вопросы. Следует ясно понимать, что отсутствие вопросов без обсуждения означает в
большинстве случаев неусвоенность материала дисциплины.
. 2.3 Контрольные вопросы
1.Определение алгоритма. Свойства алгоритмов.
2.Способы задания алгоритмов.
3.Показатели эффективности алгоритмов (время, память, устойчивость).
4.Асимптотический анализ вычислительной сложности алгоритмов. Анализ вычислительной сложности в худшем, среднем и наилучшем случаях. Асимптотические обозначения O, Θ, Ω.
5.Алгоритмы простого поиска в массиве.
6.Бинарный поиск.
7.Простые сортировки массивов.
8.Сортировка простым включением.
9.Сортировка методом Шелла.
10.Сортировка простым извлечением.
11.Сортировка методом пузырька.
12.Оптимизация сортировки методом пузырька (оптимизация по длине, по количеству, по направ-
лению).
13.Быстрые сортировки массивов.
14.Быстрая сортировка (Хоара).
15.Рекурсия. Примеры.
16.Оценка сложности алгоритмов для задач сортировок.
17.Простейшая модель вычислений: машина Тьюринга.
18.Односвязные списки.
19.Стек. Примеры использования стека при решении задач.
20.Стек: функции Push и Pop.
21.Двусвязные списки.
22.Очередь. Функции Push и Pop.
23.Дек: функции Push и Pop.
3. Методические указания по подготовке к лабораторным занятиям
. 3.1 Общие рекомендации по подготовке к лабораторным занятиям
В ходе подготовки к лабораторным занятиям необходимо изучать основную литературу, по-
знакомиться с дополнительной литературой. При этом необходимо учесть рекомендации препода-
7
вателя и требования учебной программы.
В соответствии с этими рекомендациями и подготовкой полезно дорабатывать свои конспек-
ты лекции, делая в нем соответствующие записи из литературы, рекомендованной преподавателем и предусмотренной учебной программой. Целесообразно также подготовить тезисы для возмож-
ных выступлений по всем учебным вопросам, выносимым на лабораторные занятия.
При подготовке к занятиям можно также подготовить краткие конспекты по вопросам темы.
Очень эффективным приемом является составление схем и презентаций.
Своевременное и качественное выполнение самостоятельной работы базируется на соблюде-
нии настоящих рекомендаций и изучении рекомендованной литературы.
. 3.2 Примеры задач для практических занятий
Задача 1. Написать процедуру Insert вставки элемента в упорядоченный массив.
Задача 2. Написать функцию поиска второго максимума в массиве (за один проход по массиву).
Задача 3. Написать функцию Search поиска с барьером элемента в массиве.
Задача 4. Написать процедуру бинарного поиска элемента в массиве.
Задача 5. Написать процедуру Sort_insert сортировки массива вставками, используя процедуру Insert вставки элемента в упорядоченный массив.
Задача 6. Написать процедуру Sort_bubble сортировки массива пузырьком.
Задача 7. Сортировка массива Heap_sort (сортировка кучей на месте).
Задача 8. Написать процедуру Quick_sort быстрой сортировки.
Задача 9. При различных входных данных сравнить время работы Quick_sort, Bubble_sort,
Heap_sort.
Задача 10. Дано n отрезков [a[i], b[i]] на прямой (i = 1 . . . n). Найти максимальное k, для которого существует точка прямой, покрытая k отрезками («максимальное число слоев»). Число действий
— порядка n log n.
Задача 11. Оптимизировать сортировку пузырьком по направлению пузырьков (шейкерная сорти-
ровка).
Задача 12. Отсортировать массив с помощью кучи на минимум, используя два массива.
Задача 13. Написать функции Push и Pop для стека, хранящегося в массиве.
Задача 14. Написать процедуру инициализации односвязного списка.
Задача 15. Написать функцию удаления элемента из односвязного списка.
Задача 16. Написать функцию добавления элемента в конец двусвязного списка.
8
Задача 17. Деком называют структуру, сочетающую очередь и стек: класть и забирать элементы можно с обоих концов. Как реализовать дек ограниченного размера на базе массива так, чтобы каждая операция требовала ограниченного числа действий?
Задача 18. Написать функцию добавления элемента в конец односвязного списка.
Задача 19. Написать функцию поиска первого вхождения элемента в односвязный список.
Задача 20. Написать функции Push и Pop для стека, хранящегося в односвязном списке.
Задача 21. Написать процедуру вставки элемента в упорядоченный по возрастанию односвязный список, инициализированный целыми числами.
.4. Методические указания по организации самостоятельной работы
. 4.1 Общие рекомендации для самостоятельной работы
Самостоятельная работа студентов является основным способом овладения учебным мате-
риалом в свободное от обязательных учебных занятий время.
Целями самостоятельной работы студентов являются:
-систематизация и закрепление полученных теоретических знаний и умений студентов;
-углубление и расширение теоретических знаний;
-формирование умений использовать нормативную, правовую, справочную документацию
испециальную литературу;
-развитие познавательных способностей и активности студентов:
-формирования самостоятельности мышления, способностей к саморазвитию, самосовер-
шенствованию и самореализации.
Запланированная в учебном плане самостоятельная работа студента рассматривается как связанная либо с конкретной темой изучаемой дисциплины, либо с подготовкой к расчетной рабо-
те. В данном разделе рассматривается только самостоятельная работа первого вида.
Самостоятельная работа выполняется в два этапа: планирование и реализация.
Планирование самостоятельной работы включает:
-уяснение задания на самостоятельную работу;
-подбор рекомендованной литературы;
-составление плана работы, в котором определяются основные пункты предстоящей подго-
товки.
Составление плана дисциплинирует и повышает организованность в работе.
На втором этапе реализуется составленный план. Реализация включает в себя:
-изучение рекомендованной литературы;
-составление плана (конспекта) по изучаемому материалу (вопросу);
9
- взаимное обсуждение материала.
Необходимо помнить, что на лекции обычно рассматривается не весь материал. Оставшаяся восполняется в процессе самостоятельной работы. В связи с этим работа с рекомендованной лите-
ратурой обязательна.
Работа с литературой и иными источниками информации включает в себя две группы при-
емов: техническую, имеющую библиографическую направленность, и содержательную. Первая группа – уяснение потребностей в литературе; получение литературы; просмотр литературы на уровне общей, первичной оценки; анализ надежности публикаций как источника информации, их относимости и степени полезности. Вторая – подробное изучение и извлечение необходимой ин-
формации.
Для поиска необходимой литературы можно использовать следующие способы:
-поиск через систематический каталог в библиотеке;
-просмотр специальных периодических изданий;
-использование материалов, размещенных в сети Интернет.
В процессе взаимного обсуждения материала закрепляются знания, а также приобретается практика в изложении и разъяснении полученных знаний, развивается речь.
При необходимости студенту следует обращаться за консультацией к преподавателю.
Составление записей или конспектов позволяет составить сжатое представление по изучае-
мым вопросам. Записи имеют первостепенное значение для самостоятельной работы студентов.
Они помогают понять построение изучаемого материала, выделить основные положения, просле-
дить их логику.
Ведение записей способствует превращению чтения в активный процесс. У студента, си-
стематически ведущего записи, создается свой индивидуальный фонд подсобных материалов для быстрого повторения прочитанного. Особенно важны и полезны записи тогда, когда в них находят отражение мысли, возникшие при самостоятельной работе.
Можно рекомендовать следующие основные формы записи: план, конспект, тезисы, пре-
зентация.
План – это схема прочитанного материала, краткий (или подробный) перечень вопросов,
отражающих структуру и последовательность материала. Подробно составленный план вполне заменяет конспект.
Конспект – это систематизированное, логичное изложение материала источника. Объем
конспекта не должен превышать 10 страниц. Шрифт Times New Roman, кегль 14, интервал 1,5.
10