2.1.2 Быстрая сортировка методом двоичных вставок (MergeSort)
Рассмотрим случай, когда количество элементов массива равно степени двойки n =2k
Алгоритм. 1. Разобьем массив на пары и упорядочим каждую. Получаем серии длины 2.
При втором проходе сливаем полученные на первом этапе пары в упорядоченные четвертки. Получаем серии длины 4.
При третьем проходе получаем упорядоченные восьмерки, и т.д., пока длина серии не станет равно количеству элементов массива (на k-том проходе).
Оценим трудоемкость алгоритма.
Сначала оценим трудоемкость слияния двух упорядоченных массивов из k и l элементов (считаем только сравнения):
k:
2 | 3 | 8 | 10 | 14 |
l:
3 | 5 | 6 | 10 | 11 |
Минимальная трудоемкость – меньшее из k и l – min(k,l).
Максимальная трудоемкость: k + l – 1 (единицу вычитаем потому, что сравниваем все элементы, а самый последний просто дописываем к упорядоченной группе).
В MergeSort при получении упорядоченных пар потребуется действий.
При получении упорядоченных четверок действий. Здесьесть количество четверок в массиве, а 3 – это максимальная трудоемкость получения упорядоченных четверок (считая только сравнения). Таким образом суммарная трудоемкость сортировки составит:
таким образом, трудоемкость MergeSort составляет T(n) = n log2n .
Теорема. Сортировка на порядок быстрее, чем n log2n невозможна.
Доказательство. Заметим, что сортировка с помощью некоторого алгоритма эквивалентна блужданию по двоичному дереву, где в узлах этого дерева находятся операторы сравнения. После операции сравнения маршрут двоится. Напомним, что двоичное дерево – граф, у которого ветвление в каждой вершине не больше, чем на две ветви:
Тогда развилками дерева будут сравнения двух элементов массива; а листьями – все возможные варианты перестановки элементов массива (у массива длины n их будет n!).
В этом случае трудоемкость алгоритма – высота дерева, другими словами, максимальный путь от вершины до листа дерева.
Дерево с k листьями имеется высоту не меньше, чем log2k (т.к. дерево высоты h имеет не более, чем 2k листьев). Итак, трудоемкость произвольной сортировки будет не меньше, чем log2(n!).
T(n) ≥ log2(n!)
Воспользовавшись формулой Стирлинга, имеем:
данные величины пренебрежимо малы по сравнению с nlog2n,
поэтому их во внимание не принимаем
Теорема доказана.
- Основные понятия. Справочный материал
- Основные понятия
- 1.2. Справочный материал. Сравнение скорости роста основных функций
- 2 Новые быстрые версии старых алгоритмов
- 2.1. Сортировки массивов
- 2.1.1 Метод прямого выбора (SelectSort)
- 2.1.2 Быстрая сортировка методом двоичных вставок (MergeSort)
- 2.2. Преобразование Фурье (бпф)
- 2.2.1. Дискретное преобразование Фурье
- 2.2.2. Полубыстрое преобразование Фурье (ппф)
- 2.2.3. Быстрое преобразование Фурье (бпф)
- 2.3. Быстрая свертка
- 2.3.1. Понятие свертки
- 2.3.2. Обычный и быстрый алгоритм свертки
- 2.4. Быстрое умножение
- 2.4.1. Быстрое умножение чисел
- 1 Суммирование
- 4 Произведения чисел вдвое меньшей
- 2.4.2. Быстрое умножение матриц
- 2.4.3. Очень быстрое умножение числе (алгоритм Шенхаге – Штрассена)
- 3. Задачи на графах
- 3.1. Справочный материал
- 3.2. Поиск минимального остова в связном неориентированном взвешенном графе
- 3.3. Нахождение кратчайшего расстояния
- 3.3.1. Алгоритм Форда – Беллмана
- 3.3.2. Алгоритм Дейкстры
- 3.4. Нахождение диаметра, радиуса и центра графа
- 3.5. Задача об изоморфизме графов
- 3.6. Задача коммивояжера. Её решение методом ветвей и границ.
- Задачи динамического программирования
- Задачи динамического программирования. Её решение методом динамического программирования.
- 4.2. Задача об оптимальном наборе самолетом скорости и высоты
- 4.3. Задача грабителя (задача о рюкзаке)
- 4.4. Задача о перемножении матриц
- 5 Классы p и np
- 5.1 Машина Тьюринга
- 5.2 Недетерменированные машины Тьюринга(ндмт)
- 5.3 Сводимость. Np-полнота.
- 5.4 Иерархия по сложности. Труднорешаемые задачи.
- Классы сложности.
- 6 Неразрешимые задачи
- 6.1 Новая модель алгоритма вычислений.
- 6.2 Нумерация программ
- 6.3 Неразрешимые проблемы
- 6.4 Теорема об ускорении
- Лабораторные работы
- Расчетно-графическое задание
- Ответы к домашним заданиям