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

Корневая сортировка

Сортировка Шелла

Суть сортировки Шелла состоит в том, что весь список рассматривается как совокупность перемешанных подсписков. На первом шаге эти подсписки представ­ляют собой просто пары элементов. На втором шаге в каждой группе оказывается по четыре элемента. При повторении процесса количество элементов в каждом подсписке увеличивается, а количество подсписков, соответственно, падает.

При корневой сортировке упорядочивание списка происходит без непосред­ственного сравнения ключевых значений между собой. При этом создается набор «стопок», а элементы распределяются по стопкам в зависимости от значений клю­чей. Собрав значения обратно и повторив всю процедуру для последовательных частей ключа, можно получить отсортированный список. Чтобы такая процедура работала, распределение по стопкам и последующую сборку следует выполнять очень аккуратно.

В основе пирамидальной сортировки лежит специальный тип бинарного дерева, называемый пирамидой; значение корня в любом поддереве такого дерева больше, чем значение каждого из его потомков. Непосредственные потомки каждого узла не упорядочены, поэтому иногда левый непосредственный потомок оказывается больше правого, а иногда наоборот. Пирамида представляет собой полное дерево, в котором заполнение нового уровня начинается только после того, как преды­дущий уровень оказывается заполненным целиком, а все узлы на одном уровне заполняются слева направо.

Сортировка начинается с построения пирамиды. При этом максимальный элемент списка оказывается в вершине дерева: ведь потомки вершины обяза­тельно должны быть меньше. Затем корень записывается последним элементом списка, а пирамида с удаленным максимальным элементом переформировывает­ся. В результате в корне оказывается второй по величине элемент, он копируется в список, и процедура повторяется, пока все элементы не окажутся возвращенными в список.