Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-й семестр / Лекция 5 - Тема 5 - Нетривиальные алгоритмы сортировки.ppt
Скачиваний:
40
Добавлен:
02.06.2020
Размер:
24.43 Mб
Скачать

ОЗВУЧЕННАЯ ПРЕЗЕНТАЦИЯ

ДЛЯ ВОСПРОИЗВЕДЕНИЯ ЗВУКА НАЖМИТЕ ЗНАЧОК

ИЛИ

ТЕМА 5

НЕТРИВИАЛЬНЫЕ АЛГОРИТМЫ

СОРТИРОВКИ

АЛГОРИТМ ТУРНИРНОЙ СОРТИРОВКИ. АЛГОРИТМ ПИРАМИДАЛЬНОЙ СОРТИРОВКИ. АЛГОРИТМ ХОАРА

БЫСТРОЙ СОРТИРОВКИ (QUICK SORT), ВЕРОЯТНОСТНАЯ ВЕРСИЯ БЫСТРОЙ СОРТИРОВКИ.

БЛУЖДАЮЩАЯ СОРТИРОВКА (STOOGE SORT). СОРТИРОВКИ СЛИЯНИЕМ.

МНОГОФАЗНЫЕ СОРТИРОВКИ.

ВЫЧИСЛИТЕЛЬНАЯ СЛОЖНОСТЬ АЛГОРИТМОВ СОРТИРОВКИ

Алгоритм турнирной сортировки основан на повторяющихся поисках наименьшего ключа среди n элементов, среди оставшихся n - 1 элементов и т.д. Например, сделав n/2 сравнений, можно определить в каждой паре ключей меньший; с

помощью n/4 сравнений - меньший из пары уже выбранных меньших и т.д. Проделав n - 1 сравнений, можно построить дерево выбора и идентифицировать его корень как наименьший ключ.

Второй этап сортировки - спуск вдоль пути, отмеченного наименьшим элементом, и исключение его из дерева путем замены на пустой элемент (дырку) в самом низу либо на элемент из соседней ветви в промежуточных вершинах.

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

Пример. Выполнить турнирную сортировку множества: {a1,a2,a3,a4,a5,a6,a7,a8}.

Выполняется попарное сравнение вершин дерева

Найденный минимальный элемент заменяется на специальный символ М, помещаемый в результирующее множество.

На последующих этапах найденные минимальные элементы помещаются в результирующее множество.

Временная сложность турнирной сортировки O(n log2n).

В массиве, содержащем n = 2k элементов, для выявления наименьшего элемента требуется n-1 сравнений.

2k-1 + 2k-2 + ... + 21 + 1 = n-1

Дерево обновляется, и оставшиеся n-1 элементов обрабатываются посредством k-1 сравнений вдоль пути, проходящего через родительские узлы. Общее число сравнений равно

(n-1) + (k-1)*(n-1) = (n-1) + (n-1)*(log2n-1) = (n-1) log2n

Хотя количество сравнений в турнирной сортировке составляет O(n log2n), использование пустот значительно менее эффективно.

АЛГОРИТМ ПИРАМИДАЛЬНОЙ СОРТИРОВКИ.

Дан массив из 8 элементов : 44 55 12 42 // 94 18 06 67

42 сравнили с 67 и поменяли местами: 44 55 12 // 67 94 18 06 42

12 сравнили с max (18, 6) = 18: 44 55 // 18 67 94 12 06 42

55 сравнили с max (67, 94) = 94: 44 //94 18 67 55 12 06 42

44 просеяли сквозь 94, 67 и остановились на 42: //94 67 18 44 55 12 06 42

ПОСТРОЕНИЕ КУЧИ ЗАВЕРШЕНО. ТЕПЕРЬ ЕЕ НУЖНО ОТСОРТИРОВАТЬ.