Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб. 1 АиСД (Вариант 15).docx
Скачиваний:
9
Добавлен:
01.09.2024
Размер:
201 Кб
Скачать

Шейкерная сортировка

Очевидный прием улучшения алгоритма стандартного обмена -

запоминать, были или не были перестановки в процессе некоторого

прохода. Если в последнем проходе перестановок не было, то алгоритм

можно заканчивать. Это улучшение, однако, можно опять же улучшить,

если запоминать не только сам факт, что обмен имел место, но и положение (индекс) последнего обмена. Ясно, что все пары соседних элементов выше этого индекса k уже упорядочены. Поэтому просмотры

можно заканчивать на этом индексе, а не идти до заранее определенного

нижнего предела для i.

Быстрая сортировка (сортировка Хоара)

В методе быстрой сортировки фиксируется базовый ключ, относительно которого все элементы с большим весом перемещаются вправо,

а с меньшим - влево. В качестве базового элемента обычно выбирается

любой крайний элемент исходного множества, который постоянно

сравнивается с противоположно стоящими элементами. При этом весь

список элементов делится относительно базового ключа на две части.

Для каждой части процесс повторяется.

Сортировка в нелинейных структурах Турнирная сортировка

Метод турнирной сортировки основан на повторяющихся поисках

наименьшего ключа среди n элементов, среди оставшихся (n – 1)

элементов и т.д. Например, сделав n/2 сравнений, можно определить в

каждой паре ключей меньший. С помощью n/4 сравнений – меньший

из пары уже выбранных меньших и т.д. Проделав (n – 1) сравнений,

можно построить дерево выбора и идентифицировать его корень как

наименьший ключ.

Затем осуществляется спуск вдоль пути, отмеченного наименьшим

элементом, и исключение его из дерева путем замены либо на пустой

элемент (дырку) в самом низу, либо на элемент из соседней ветви в

промежуточных вершинах. Элемент, передвинувшийся в корень дерева,

вновь будет наименьшим (теперь уже вторым) ключом, и его можно исключить. После n таких шагов дерево станет пустым (т.е. в нем останутся одни дырки) и процесс сортировки заканчивается.

Пирамидальная сортировка

Данный тип сортировки заключается в построении пирамидального дерева. Пирамидальное дерево — это бинарное дерево, обладающее

тремя свойствами:

1. В вершине каждой триады располагается элемент с бо́льшим

весом.

2. Листья бинарного дерева находятся либо в одном уровне, либо

в двух соседних.

3. Листья нижнего уровня располагаются левее листьев более высокого уровня, т.е. заполнение каждого уровня осуществляется слева

направо.

В ходе преобразования элементы триад сравниваются дважды, при этом элемент с большим весом перемещается вверх, а с меньшим – вниз.

Топологическая сортировка

Топологическая сортировка — это одна из известных задач в программировании, в которой широко применяются списки. Под топологической сортировкой понимается сортировка элементов, для которых

определен частичный порядок, т.е. упорядочение задано не на всех, а

только на некоторых парах элементов.

Лабораторная работа № 2

Методы поиска

Методы поиска, основанные на сравнении ключей

Последовательный поиск

В последовательном поиске исходное множество не упорядоченное, т.е. имеется произвольный набор ключей {k1, k2, k3,..., kn}. Метод

заключается в том, что отыскиваемый ключ K последовательно сравнивается со всеми элементами множества. При этом поиск заканчивается

досрочно, если ключ найден.

Бинарный поиск

В бинарном поиске исходное множество должно быть упорядоченным по возрастанию. Иными словами, каждый последующий ключ

больше предыдущего:

{k1 ≤ k2 ≤ k3 ≤ k4 ,..., kn–1 ≤ kn}.

Отыскиваемый ключ сравнивается с центральным элементом множества.

Если он меньше центрального, то поиск продолжается в левом подмножестве, в противном случае - в правом.

Центральный элемент находится по формуле:

Nэл = [n/2] + 1,

где квадратные скобки обозначают, что от деления берется только целая

часть (дробная часть не учитывается). В методе бинарного поиска анализируются только центральные элементы.