- •Лабораторный практикум по курсу « Структуры и алгоритмы обработки данных » Оглавление
- •20 Методика выполнения лабораторной работы 28
- •30 Лабораторное задание 45
- •47 Решение задач 72
- •1. Лабораторная работа - Методы сортировки
- •Теоретические сведения
- •Сортировка выбором
- •Сортировка вставкой
- •Сортировка обменом
- •Сортировка Шелла
- •Быстрая сортировка (сортировка Хоара)
- •Сортировка в нелинейных структурах
- •Турнирная сортировка
- •Пирамидальная сортировка
- •Функция сложности алгоритма
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Пояснения к выполнению работы.
- •Лабораторная работа -Методы поиска
- •Теоретические сведения
- •Последовательный поиск.
- •Бинарный поиск.
- •Фибоначчиев поиск.
- •Интерполяционный поиск.
- •Поиск по бинарному дереву.
- •Поиск по сбалансированному дереву.
- •Поиск по бору
- •Поиск хешированием
- •Алгоритмы поиска словесной информации
- •Алгоритм Кнута - Морриса - Пратта
- •Алгоритм Бойера - Мура
- •Алгоритм Рабина
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Лабораторная работа -Итеративные и рекурсивные алгоритмы
- •Теоретические сведения
- •Итеративный алгоритм.
- •Итеративное вычисление факториала
- •Рекурсивное вычисление факториала
- •Рекурсивные структуры данных
- •Формирование бинарного дерева
- •Рекурсивная процедура обхода узлов дерева сверху-вниз
- •Лабораторное задание
- •Требования к отчету
- •Контрольные вопросы
- •Литература
- •Лабораторная работа - Алгоритмы построения остовного дерева сети
- •Теоретические сведения
- •Алгоритмы Крускала и Прима
- •Пример со схемой микрорайона
- •Пример со схемой компьютерной сети
- •Лабораторное задание
- •Требования к отчёту
- •Литература
- •Задание к лабораторной работе 4
- •Решение задач
- •Лабораторная работа - Алгоритмы нахождения на графах кратчайших путей
- •Теоретические сведения
- •Метод динамического программирования.
- •Пример определения кратчайшего пути №1
- •Пример нахождения кратчайшего пути при условии, что граф неориентированный№2
- •Метод Дейкстры
- •Алгоритм Флойда
- •Алгоритм Йена
- •Алгоритм Беллмана- Форда
- •Литература
- •Лабораторное задание.
- •Требования к отчету
- •Варианты заданий
- •Задание 1: Найти кратчайший путь на графе между тремя парами вершин методом динамического программирования
- •Задание 2: Найти кратчайший путь между тремя парами вершин методом Дейкстры
- •Решение задач
- •Задание на разработку программы
- •Лабораторная работа -Эвристические алгоритмы
- •Теоретические сведения
- •Волновой алгоритм
- •Двухлучевой алгоритм.
- •Пример 2. Осуществить трассировку элементов а и в .
- •Четырехлучевой алгоритм
- •Маршрутный алгоритм.
- •Геометрическая модель задачи о лабиринте
- •Алгоритмы составления расписания.
- •Литература
- •Лабораторное задание.
- •Требования к отчету
- •Решение задач
-
Сортировка Шелла
В методе Шелла сравниваются не соседние элементы, а элементы, расположенные на расстоянии d (где d – шаг между сравниваемыми элементами) d = [n/2]. После каждого просмотра шаг d уменьшается вдвое. На последнем просмотре он сокращается до d = 1.
Например, пусть дан список, в котором число элементов чётно:
{40, 11, 83, 57, 32, 21, 75, 64}
Список длины n разбивается на n/2 частей, т.е. d = [n/2] = 4.
-
Исходный массив
40
11
83
57
32
21
75
64
d = 4
32
11
75
5740
21
83
64
Полученный массив
32
11
75
57
40
21
83
64
Рис. 5. Метод Шелла (d=4 )
-
Исходный массив
32
11
75
57
40
21
83
64
d = 2
32
1175
40
57
21
75
7557
57
83
64
Полученный массив
32
11
40
21
75
57
83
64
Рис. 6. Метод Шелла (d=2 )
При первом просмотре сравниваются элементы, отстоящие друг от друга на d = 4 (рис.5), т.е. k1 и k5, k2 и k6 и т.д. Если ki > ki+d, то происходит обмен между позициями i и (i+d). Перед вторым просмотром выбирается шаг d = [d / 2] = 2 ( рис.6 ). Затем выбираем шаг d = [d / 2] = 1 ( рис.7 ), т.е. имеем аналогию с методом стандартного обмена.
Сложность метода Шелла O(0,3n(log2n)2).
-
Исходный список
32
11
40
21
75
57
83
64
d =1
11
32
32
4021
40
40


75
57

75
75
8364
83
Полученный список
11
32
21
40
57
75
64

Рис. 7. Метод Шелла (d=1 )
