- •Алгоритмы и структуры данных
- •231000.62 – «Программная инженерия»
- •Содержание
- •Введение
- •1. Линейные структуры данных
- •1.1. Линейный список
- •1.2. Стек
- •1.3. Очереди
- •1.3.1. Универсальная очередь неограниченного размера
- •1.3.2. Универсальная очередь ограниченного размера
- •2. Нелинейные структуры данных. Бинарные деревья
- •3. Алгоритмы сортировки данных в оперативной памяти
- •3.1. Сортировка массива простым выбором
- •3.2 Сортировка массива вставками (сортировка Шелла)
- •3.3 Сортировка массива обменом (сортировка Хоара)
- •3.4 Сортировка с помощью дерева (пирамиды)
- •3.5 Генерация массива числовых данных случайным распределением значений элементов
- •4. Внутренний поиск данных в таблице
- •1. Последовательный поиск.
- •4.1. Последовательный поиск
- •4.2 Логарифмический (бинарный ) поиск
- •4.3. Поиск с использованием перемешанной таблицы (хэш-таблицы)
- •5. Алгоритмы поиска на графах
- •5.1. Поиск кратчайшего пути. Алгоритм Дейкстры
- •. Поиск кратчайшего пути. Алгоритм Флойда
- •6. Задания для выполнения лабораторных работ
- •6.1. Задания для выполнения лабораторной работы №1 «Линейные структуры данных» Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •6.2 Задания для выполнения лабораторной работы №2 «Нелинейные структуры данных. Бинарные деревья» Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •6.3. Задания для выполнения лабораторной работы №3 «Алгоритмы сортировки данных в оперативной памяти» Вариант 1
- •6.4. Задания для выполнения лабораторной работы №4 «Внутренний поиск данных в таблице» Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •6.5.1. Поиск кратчайшего пути. Алгоритм Дейкстры
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •6.5.2. Поиск кратчайшего пути. Алгоритм Флойда
- •Вариант 15
- •7. Курсовая работа
- •7.3.1. Назначение, цели и задачи курсовой работы
- •7.3.2. Требования к курсовой работе
- •7.3.2.1. Требования к функциональным характеристикам
- •7.3.2.2. Требования к эксплуатационным характеристикам
- •7.3.2.3. Требования к программному обеспечению
- •7.3.2.4. Требования к содержанию курсовой работы
- •7.3.3. Варианты заданий курсовой работы
- •Заключение
- •Список литературы
- •231000.62 – «Программная инженерия»
3. Алгоритмы сортировки данных в оперативной памяти
Сортировка – процесс перестановки объектов множества в определенном порядке. Цель сортировки – упрощение поиска элементов в отсортированном множестве. Методы сортировки разделяют на две категории:
- внутренняя сортировка;
- внешняя сортировка.
Внутренняя сортировка – сортировка данных, расположенных в оперативной памяти. Например, сортировка массивов.
Внешняя сортировка – сортировка данных, расположенных вне оперативной памяти (внешних носителях). Например, сортировка последовательных файлов.
Основное требование к методам сортировки массивов – экономное использование памяти: сортировку нужно выполнять «на том же месте» (in site).
Методы сортировки подразделяются на три класса:
- Сортировка выбором. Выбирается элемент с наибольшим значением ключа и меняется местами с последним. Затем то же повторяется для s-1 элемента. Найденный элемент с наибольшим значением ключа меняется местами с предпоследним элементом и т.д.
- Сортировка вставками. Элементы разделяются на упорядоченную последовательность и неупорядоченную. В начале упорядоченная последовательность содержит один элемент. Очередной элемент из неупорядоченной части вставляется на подходящее место в упорядоченную часть. Упорядоченная часть удлиняется на один элемент, а неупорядоченная укорачивается. Сортировка заканчивается при исчезновении неупорядоченной части.
- Сортировка обменом. Выполняется обмен местами двух соседних элементов (перестановка), если они расположены не так, как требует отсортированный массив.
3.1. Сортировка массива простым выбором
Алгоритм сортировки включает этапы:
1. Выбирается элемент с наибольшим значением ключа.
2. Элемент меняется местами с последним элементом arr[s-1]. Операции повторяются с оставшимися первыми s-1 элементами, затем – с s-2 первыми элементами и т.д. до тех пор, пока не останется только один первый элемент – наименьший.
3.2 Сортировка массива вставками (сортировка Шелла)
Метод Шелла является улучшением метода сортировки прямой вставки. Основан на сортировке посредством вставки с уменьшающимися расстояниями.
Алгоритм сортировки включает этапы:
1. Используется несколько проходов.
2. На первом проходе отдельно группируются и сортируются вставками элементы, отстоящие друг от друга на d=size/2 позиций.
3. На втором проходе группируются и сортируются вставками элементы, отстоящие друг от друга на d=d-1 позиций.
4. Аналогично выполняются следующие проходы. Сортировка заканчивается последним проходом при d=1 (как при простой сортировке вставками).
3.3 Сортировка массива обменом (сортировка Хоара)
Метод Хоара является усовершенствованием прямого метода обмена.
Алгоритм сортировки включает этапы:
1. Исходный массив разбивается на два сегмента - левый, элементы которого arr[i].key<=median.key, и правый сегмент с элементами arr[j].key>=median.key.
2. Каждый из полученных сегментов сортируется автономно, аналогично предыдущему, до получения сегментов единичной длины [5; 6].
