
- •1.1Алгоритмы сортировки данных
- •1.1.1Методы внутренней сортировки
- •1.1.1.1Метод выбора
- •1.1.1.2Метод обмена
- •1.1.1.3Сортировка вставками
- •1.1.1.4Метод подсчета
- •1.1.1.5Метод Шелла
- •1.1.1.6Быстрая сортировка
- •1.1.1.6.1Краткое описание алгоритма
- •1.1.1.6.2Алгоритм
- •1.1.1.6.3Оценка эффективности
- •1.1.1.6.4Улучшения
- •1.1.1.6.5Достоинства и недостатки
- •1.1.1.7Пирамидальная сортировка
- •1.1.1.7.1Понятие пирамиды
- •1.1.1.7.2Просеивание вверх
- •1.1.1.7.3Просеивание вниз
- •1.1.1.7.4Построение пирамиды
- •1.1.1.8Сортировка слиянием
- •1.1.1.8.1Процедура слияния
- •1.1.1.8.2Сортировка слиянием
- •1.1.2Методы внешней сортировки
- •1.1.2.1Сбалансированное n-ленточное слияние
- •1.1.3Факторы, учитываемые при выборе метода сортировки.
- •2Размещение данных, основанное на преобразовании кода записи в ее адрес
- •2.1Хеширование данных
- •2.2Методы разрешения коллизий
- •2.3Переполнение таблицы и рехеширование
1.1.1.6.5Достоинства и недостатки
Достоинства:
Один из самых быстродействующих (на практике) из алгоритмов внутренней сортировки общего назначения.
Прост в реализации.
Требует лишь
дополнительной памяти для своей работы. (Не улучшенный рекурсивный алгоритм в худшем случае
памяти)
Хорошо сочетается с механизмами кэширования и виртуальной памяти.
Существует эффективная модификация (алгоритм Седжвика) для сортировки строк — сначала сравнение с опорным элементом только по нулевому символу строки, далее применение аналогичной сортировки для «большего» и «меньшего» массивов тоже по нулевому символу, и для «равного» массива по уже первому символу.
Недостатки:
Сильно деградирует по скорости (до
) при неудачных выборах опорных элементов, что может случиться при неудачных входных данных. Этого можно избежать, используя такие модификации алгоритма, как Introsort, или вероятностно, выбирая опорный элемент случайно, а не фиксированным образом.
Наивная реализация алгоритма может привести к ошибке переполнения стека, так как ей может потребоваться сделать вложенных рекурсивных вызовов. В улучшенных реализациях, в которых рекурсивный вызов происходит только для сортировки меньшей из двух частей массива, глубина рекурсии гарантированно не превысит .
Неустойчив — если требуется устойчивость, приходится расширять ключ.
1.1.1.7Пирамидальная сортировка
Алгоритм пирамидальной сортировки по-английски называется «Heap Sort». «Heap» переводится, как «куча». В связи с этим пирамидальную сортировку ещё называют «сортировка кучей»
Пирамидальная сортировка
была предложена Дж. Уильямсом
в 1964 году. Это алгоритм
сортировки массива
произвольных элементов;
требуемый им дополнительный
объём памяти не зависит
от количества исходных
данных. Время работы алгоритма
-
в среднем,
а также в лучшем и худшем
случаях.
1.1.1.7.1Понятие пирамиды
Двои́чная ку́ча, пирами́да, или сортиру́ющее де́рево — такое двоичное дерево, для которого выполнены три условия:
1. Значение в любой вершине не меньше, чем значения её потомков.
2. Каждый лист имеет глубину (расстояние до корня) либо d либо d-1. Иными словами, если назвать слоем совокупность вершин, находящихся на определённой глубине, то все слои, кроме, быть может, последнего, заполнены полностью.
3. Последний слой заполняется слева направо.
Удобная структура данных для хранения
сортирующего дерева - массив A,
у которого первый элемент, A[1] —
элемент в корне, а потомками элемента A[i]
являются A[2i] и A[2i+1]
(при нумерации элементов с первого). При
нумерации элементов с нулевого, корневой
элемент — A[0], а потомки
элемента A[i] — A[2i+1]
и A[2i+2]. При таком способе
хранения условия 2 и 3 выполнены
автоматически. Родитель узла
имеет номер
:
Рис. 4.1. Пример нумерации элементов сортирующего дерева
Высота кучи определяется как высота
двоичного дерева. То есть она равна
количеству рёбер в самом длинном простом
пути, соединяющем корень кучи с одним
из её листьев. Высота кучи есть
,
где N — количество узлов дерева.
Важной операцией для пирамиды является отделение последнего (в смысле нумерации) элемента от пирамиды. Нетрудно доказать, что в этом случае двоичное дерево остаётся почти заполненным, и все свойства пирамиды сохраняются.