
- •Министерство общего и профессионального образования Российской Федерации
- •Содержание
- •Введение
- •1.Структуры данных
- •1.1 Треугольные массивы 2
- •1.2 Списки 3
- •Простые списки
- •Неупорядоченные списки
- •Связанные списки
- •1.3 Стеки 6
- •1.4 Очереди. Деки. 7
- •1.5 Деревья 8
- •Обход деревьев
- •Упорядоченные деревья
- •Добавление элементов
- •Сбалансированные деревья
- •Красно-черные деревья 12
- •Деревья со случайным поиском 13
- •2.Сортировка
- •2.1 Внутренняя сортировка 16
- •Сортировка путем вставок
- •Обменная сортировка
- •Метод пузырька
- •Параллельная сортировка Бэтчера
- •Алгоритм сортировки Бетчера Быстрая сортировка
- •Модификации метода быстрой сортировки
- •Сортировка посредством выбора
- •Фаза 2: сортировка
- •Сортировка методом слияния 18
- •Сортировка методом распределения
- •Поразрядная сортировка
- •Поразрядная сортировка для списков
- •2.2 Внешняя сортировка 19
- •Прямое слияние
- •Естественное слияние
- •Сбалансированное многопутевое слияние
- •3.Поиск
- •3.1 Последовательный поиск 20
- •3.2 Поиск путем сравнения ключей
- •Поиск в упорядоченной таблице Бинарный поиск
- •3.3 Хеширование 21
- •4.Сетевые алгоритмы 22
- •4.1 Представления сетей
- •Управление узлами и связями
- •4.2 Обход сети
- •4.3 Наименьший каркас дерева
- •4.4 Кратчайший путь
- •Расстановка меток
- •Коррекция меток
- •5.Задачи для лабораторных работ
- •Заключение
- •Библиографический список
Министерство общего и профессионального образования Российской Федерации
Самарский государственный университет
Кафедра БЕЗОПАСНОСТИ ИНФОРМАЦИОННЫХ СИСТЕМ
МЕТОДЫ ПРОГРАММИРОВАНИЯ. КЛАССИЧЕСКИЕ АЛГОРИТМЫ
Учебно-методическое пособие для студентов
механико-математического факультета
специальности 075200 – Компьютерная безопасность
Издательство «Самарский университет»
2004 г.
Сост. А.Н. Крутов. Методы программирования. Классические алгоритмы: Учебно-методическое пособие. – Самара: Изд-во «Самарский университет», 2004. – 77 с.
Основой данного пособия являются материалы лекций, прочитанных автором по первой половине курса “Методы программирования” для специальности 075200 – Компьютерная безопасность.
В пособии кратко рассматриваются наиболее распространенные в настоящее алгоритмы по обработки информации.
Учебно-методическое пособие предназначено для студентов механико-математического факультета Самарского государственного университета (специальность «Компьютерная безопасность»).
Рецензенты:
Рогачева Е.В., доцент кафедры информатики и высшей математики
Ефимов Ю.Е., доцент кафедры информатики и высшей математики
Содержание
Введение 4
1. Структуры данных 5
1.1 Треугольные массивы 7
1.2 Списки 8
1.3 Стеки 13
1.4 Очереди. Деки. 14
1.5 Деревья 15
2. Сортировка 33
2.1 Внутренняя сортировка 33
2.2 Внешняя сортировка 44
3. Поиск 45
3.1 Последовательный поиск 46
3.2 Поиск путем сравнения ключей 48
3.3 Хеширование 49
4. Сетевые алгоритмы 54
4.1 Представления сетей 56
4.2 Обход сети 57
4.3 Наименьший каркас дерева 60
4.4 Кратчайший путь 61
5. Задачи для лабораторных работ 75
Заключение 77
Библиографический список 78
Введение
В настоящее время компьютерная техника развивается стремительными темпами. Однако ключевая роль в достижении успеха большинства компьютеризованных систем принадлежит не используемому оборудованию, а программному обеспечению. Поэтому задача разработки качественных и надежных программных продуктов с использованием оптимальных алгоритмов никогда не перестанет быть актуальной. Настоящее пособие является первой частью цикла учебных пособий по курсу “Методы программирования” для специальности 075200 – Компьютерная безопасность. Данное пособие посвящено описанию алгоритмов, ставших уже классическими, несмотря на относительно небольшую историю развития информатики и программирования.
В первой главе настоящего пособия описываются основные структуры данных, применяемые в программировании. К ним относятся массивы, списки, стеки, очереди, а также деревья. Вторая глава посвящена описанию алгоритмов сортировки. В начале описываются алгоритмы внутренней сортировки, когда весь сортируемый массив данных считывается в оперативную память. Далее приводятся алгоритмы внешней сортировки, для которых характерно наличие такого объема данных, который не представляется возможным целиком разместить в оперативной памяти. В третьей главе приводятся различные алгоритмы поиска информации в упорядоченных и неупорядоченных массивах. Далее в пособии вводится понятие хеш-функции и предлагаются ряд алгоритмов для работы с ними. Четвертая глава рассматривает алгоритмы на графах. К ним относятся обход графа, поиск кратчайшего пути и задача о максимальном потоке. В конце пособия по итогам всех приведенных тем предлагается список задач для лабораторных работ по курсу.
Данное пособие представляет собой первую часть лекционного курса составителя по дисциплине “Методы программирования” для специальности 075200 – Компьютерная безопасность. При подготовке данного методического пособия активно использовалась литература, приведенная в библиографическом списке, а также материалы internet-сайтов, таких как http://www.citforum.ru и http://algoritm.manual.ru. Составитель данного пособия никоим образом не собирается посягать ни на авторство алгоритмов, ни на авторство материалов, приводимых в данном пособии. В начале каждой темы дается ссылка на первоисточник с тем, чтобы студент в случае необходимости смог обратиться за дополнительной информацией. Библиографический список данного пособия намеренно не содержит слишком большое количество монографий, чтобы акцентировать внимание студентов на самых главных их них. При желании можно открыть последнюю страницу любой из приведенных монографий с тем, чтобы получить более развернутый список литературы.