- •Структуры и алгоритмы обработки данных
- •Содержание
- •Введение
- •1. Линейные структуры данных
- •1.1 Линейный список
- •1.2 Стек
- •1.3 Очереди
- •1.3.1 Универсальная очередь неограниченного размера
- •1.3.2.2 Универсальная очередь ограниченного размера
- •2. Нелинейные структуры данных. Бинарные деревья
- •3. Алгоритмы сортировки данных в оперативной памяти
- •3.1 Сортировка массива простым выбором
- •3.2 Сортировка массива вставками (сортировка Шелла)
- •3.3 Сортировка массива обменом (сортировка Хоора)
- •3.4 Генерация массива числовых данных случайным распределением значений элементов
- •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 Задания для выполнения лабораторной работы «Алгоритмы поиска на графе».
- •6.5.1 Поиск кратчайшего пути. Алгоритм Дейкстры Вариант 1
- •Вариант 2
- •6.5.2 Поиск кратчайшего пути. Алгоритм Флойда
- •Вариант 15
- •7. Задания для выполнения контрольной работы
- •Заключение
- •Список литературных первоисточников
1.3 Очереди
Очередь – частный случай однонаправленного списка. Добавление элементов выполняется в один конец, а выборка – из другого конца. Другие операции с очередью не определены. При выборке элемент исключается из очереди. Очередь реализует принцип обслуживания FIFO (first in- first out, первым пришел – первым ушел).
Над очередью определены три операции:
- занесение элемента в очередь;
- выбор элемента из очереди;
- просмотр элементов очереди
При выборе элемента из очереди он исключается. В очереди доступны левый и правый конец, в которые можно заносить или выбирать элементы.
В программировании очередь применяется при моделировании, диспетчеризации задач операционной системой, буферизованном вводе/выводе.
1.3.1 Универсальная очередь неограниченного размера
Универсальная очередь неограниченного размера строится на базе двунаправленного линейного списка с размещением элементов в динамической памяти и не имеет ограничений на размер. Недостаток очереди неограниченного размера – повышенный расход памяти.
1.3.2.2 Универсальная очередь ограниченного размера
Универсальная очередь ограниченного размера реализуется на базе массива. Для каждого элемента очереди хранится последняя информация. Связи между элементами универсальной очереди ограниченного размера и указателями на концы очереди определяются индексами массива.
2. Нелинейные структуры данных. Бинарные деревья
Бинарные деревья – динамическая структура данных, состоящая из узлов, каждый из которых содержит данные и не более двух ссылок на бинарные деревья. На каждый узел имеется одна ссылка. Корень дерева – начальный узел дерева. Лист дерева – узел, не имеющий поддеревьев. Предки – исходящие узлы, потомки – входящие узлы. Высота дерева – количество уровней, на которых располагаются узлы.
Дерево поиска – дерево у которого для каждого узла все ключи левого поддерева меньше ключа этого узла, а все ключи правого поддерева больше ключа этого узла. В дереве поиска можно найти элемент по ключу, двигаясь от корня и переходя на левое или правое поддерево в зависимости от значения ключа в каждом узле. Поиск по ключу эффективнее поиска по списку, поскольку время поиска определяется высотой дерева. Высота дерева пропорциональна двоичному логарифму количества узлов.
Дерево является рекурсивной структурой данных. Действия с деревьями описываются рекурсивными алгоритмами. Деревья поиска применяются для сортировки значений. При обходе дерева узлы не удаляются.
Для бинарных деревьев определены операции:
- включение узла дерева;
- поиск по дереву;
- обход дерева;
- удаление узла.
3. Алгоритмы сортировки данных в оперативной памяти
Сортировка –процесс перестановки объектов множества в определенном порядке. Цель сортировки – упрощение поиска элементов в отсортированном множестве. Методы сортировки разделяют на две категории:
- сортировка массивов (внутренняя сортировка);
- сортировка последовательных файлов (внешняя сортировка).
Основное требование к методам сортировки массивов – экономное использование памяти: сортировку нужно выполнять “на том же месте” (in site).
Методы сортировки подразделяются на три класса:
- Сортировка выбором. Выбирается элемент с наибольшим значением ключа и меняется местами с последним. Затем то же повторяется для s-1 элемента. Найденный элемент с наибольшим значением ключа меняется местами с предпоследним элементом и т.д.
- Сортировка вставками. Элементы разделяются на готовую последовательность (упорядоченную) и неупорядоченную. В начале упорядоченная часть содержит один элемент. Очередной элемент из неупорядоченной части вставляется на подходящее место в упорядоченную часть. Упорядоченная часть удлиняется на один элемент, а неупорядоченная укорачивается. Сортировка заканчивается при исчезновении неупорядоченной части.
- Сортировка обменом выполняется обмен местами двух соседних элементов (перестановка), если они расположены не так, как требует отсортированный массив.