- •Содержание
- •Глава 5. Алгоритмы сортировок 52
- •Глава 6. Алгоритмы поиска 63
- •Глава 1. Основные операции при работе с деревьями
- •1.1. Определение глубины дерева
- •1.2. Операции поиска и включения элемента в дерево
- •1.3. Оптимизация поиска в дереве
- •1.3.1. Обходы дерева с нумерацией вершин
- •1.4. Поиск и включение в двоичное дерево
- •Контрольные вопросы
- •Задания для практической работы
- •Глава 2. Сбалансированные двоичные деревья
- •2.1. Преобразование двоичного дерева в лозу.
- •2.2. Преобразование лозы в сбалансированное двоичное дерево.
- •Контрольные вопросы
- •Задания для практической работы
- •Глава 3. Жадные алгоритмы
- •3.1. Понятие жадного алгоритма
- •3.2. Алгоритм Хаффмана
- •Контрольные вопросы
- •Задания для практической работы
- •Глава 4. Графы
- •4.1. Алгоритмы представления графа
- •4.1.1. Представление графа в виде массива
- •4.1.2. Представление графа в виде матрицы смежности
- •4.1.3. Представление графа в виде связанного списка
- •4.1.4. Представление графа в виде списка дуг
- •4.1.5. Преобразования структур графа
- •4.2. Обходы в графах
- •4.3. Определение путей и контуров Эйлера
- •4.4. Поиск кратчайших путей
- •4.4.1. Алгоритм э. Дейкстры.
- •4.4.2. Алгоритм Флойда — Уоршалла
- •4.5. Определение остовных деревьев
- •4.5.1. Алгоритм Крускала
- •4.5.2. Алгоритм Прима
- •Контрольные вопросы
- •Определение путей и контуров Эйлера
- •Задания для практической работы
- •Глава 5. Алгоритмы сортировок
- •5.1. Сортировка выбором
- •5.2. Сортировка вставками
- •5.3. Пузырьковая сортировка
- •5.4. Быстрая сортировка
- •5.5. Сортировка слиянием
- •5.6. Пирамидальная сортировка
- •Контрольные вопросы
- •Задания для практической работы
- •Глава 6. Алгоритмы поиска
- •6.1. Последовательный поиск
- •6.2. Двоичный поиск
- •6.3. Работа со словарем. Иоиск и вставка. Хеширование.
- •6.4. Поиск подстроки в строке
- •6.4.1. Алгоритм прямого поиска подстроки в строке
- •Контрольные вопросы
- •Задания для практической работы
- •Литература
Контрольные вопросы
Основные понятия теории графов
Перечислите алгоритмы представления графа
Особенности представления графа в виде массива
Особенности представления графа в виде матрицы смежности
Особенности представления графа в виде связанного списка
Особенности представления графа в виде списка дуг
Особенности преобразования структур графа
Реализация обходов в графах
Определение путей и контуров Эйлера
Поиск кратчайших путей методом Дейкстры
Поиск кратчайших путей методом Флойда-Уоршала
Определение остовных деревьев методом Крускала
Определение остовных деревьев методом Прима
Задания для практической работы
Выберите граф и выполните следующие операции:
представить граф в виде массива;
представить граф в виде матрицы смежности;
представить граф в виде связанного списка;
представить граф в виде списка дуг;
предусмотреть возможность преобразования структур графа;
реализовать обход графа в глубину и ширину;
определить если имеются путь и контур Эйлера;
реализовать поиск кратчайшего пути методом Дейкстры и методом Флойда-Уоршала. Провести сравнительные характкристики;
определить минимальноем остовное дерево методом Крускала и методом Прима. Провести сравнительные характкристики.
1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.
16.
15.
Глава 5. Алгоритмы сортировок
5.1. Сортировка выбором
Один из самых простых алгоритмов сортировки работает следующим образом. Сначала отыскивается наименьший элемент массива, затем он меняется местами с элементом, стоящим первым в сортируемом массиве. Далее, находится второй наименьший элемент и меняется местами с элементом, стоящим вторым в исходном массиве. Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован.
Изложенный метод называется сортировкой выбором, поскольку он работает по принципу выбора наименьшего элемента из числа неотсортированных. На рис. 1 представлен пример работы этого метода.
A |
S |
O |
R |
T |
I |
N |
G |
E |
X |
A |
M |
P |
L |
E |
A |
S |
O |
R |
T |
I |
N |
G |
E |
X |
A |
M |
P |
L |
E |
A |
A |
O |
R |
T |
I |
N |
G |
E |
X |
S |
M |
P |
L |
E |
A |
A |
E |
R |
T |
I |
N |
G |
O |
X |
S |
M |
P |
L |
E |
A |
A |
E |
R |
T |
I |
N |
G |
O |
X |
S |
M |
P |
L |
E |
A |
A |
E |
E |
T |
I |
N |
G |
O |
X |
S |
M |
P |
L |
R |
A |
A |
E |
E |
G |
I |
N |
T |
O |
X |
S |
M |
P |
L |
R |
A |
A |
E |
E |
G |
I |
N |
T |
O |
X |
S |
M |
P |
L |
R |
A |
A |
E |
E |
G |
I |
L |
T |
O |
X |
S |
M |
P |
N |
R |
A |
A |
E |
E |
G |
I |
L |
M |
O |
X |
S |
T |
P |
N |
R |
A |
A |
E |
E |
G |
I |
L |
M |
N |
X |
S |
T |
P |
O |
R |
A |
A |
E |
E |
G |
I |
L |
M |
N |
O |
S |
T |
P |
X |
R |
A |
A |
E |
E |
G |
I |
L |
M |
N |
O |
P |
T |
S |
X |
R |
A |
A |
E |
E |
G |
I |
L |
M |
N |
O |
P |
R |
S |
X |
T |
A |
A |
E |
E |
G |
I |
L |
M |
N |
O |
P |
R |
S |
X |
T |
A |
A |
E |
E |
G |
I |
L |
M |
N |
O |
P |
R |
S |
T |
X |
A |
A |
E |
E |
G |
I |
L |
M |
N |
O |
P |
R |
S |
T |
X |
Рис.1. Пример работа сортировки выбором
В этом примере первый проход не дал результата, поскольку слева от А в массиве нет элемента, меньшего А. На втором проходе другой элемент А оказался наименьшим среди оставшихся, поэтому он меняется местами с элементом S, занимающим вторую позицию. Далее, на третьем проходе, элемент Е, находящийся в середине массива, меняется местами с О, занимающим третью позицию; затем, на четвертом проходе, еще один элемент Е меняется местами с R, занимающим четвертую позицию и т.д.
Для каждого i от I до г-1 поменять местами элемент a[i] с минимальным элементом в последовательности a[i],...,a[r],. По мере продвижения индекса i слева направо, элементы слева от него занимают свои окончательные позиции в массиве (дальнейшим перемещениям они не подлежат), таким образом, массив будет полностью отсортирован, когда i достигнет его правого конца.
Недостаток сортировки выбором заключается в том, что время ее выполнения лишь в малой степени зависит от того, насколько упорядочен исходный массив. Процесс нахождения минимального элемента за один проход массив дает очень мало сведений о том, где может находиться минимальный элемент на следующем проходе этого массива. На сортировку почти отсортированного массива требуется столько же времени, сколько и на сортировку массива, упорядоченного случайным образом!