Пирамидальная сортировка набора чисел. Автоматическое построение логики визуализатора


Метод пирамидальной сортировки был разработан английским математиком Дж. Уильямсом. В основе метода - удобная нумерация вершин двоичного дерева и связь дерева с массивом.
Рассмотрим полное двоичное дерево с ветвями высоты k. Такое дерево имеет 2(k+1) - 1 вершин(таким образом, зависимость высоты дерева от числа вершин почти логарифмическая). Действительно, корневая вершина образует нулевой слой этого дерева, далее в каждом горизонтальном слое число вершин вдвое больше, чем в предыдущем, а слой k содержит 2k вершин. Если перенумеровать вершины сверху вниз и слева направо, то легко убедиться, что вершина с номером s соединится с вершинами 2s и 2s + 1 следующего слоя (дети этой вершины).
Иерархическая сортировка основана на этом способе нумерации. Каждому индексу массива ставится в соответствие единственная вершина, а элементы массива (обозначим его через h[1:n]) могут рассматриваться как вершины двоичного дерева. В терминах этого дерева и происходит сортировка массива. Простая арифметическая связь номеров соединённых вершин позволяет перевести эти элементы в индексы.
Сортировка состоит из двух фаз. Первая фаза обеспечивает иерархическую упорядоченность массива: значение в каждой вершине должно быть хуже (так как сортировка традиционно осуществляется по возрастанию, то под словом "хуже" понимается "больше"), чем у детей. Для этого используется операция просеивания элемента: текущий элемент сравнивается с худшим из элементов-детей, и если ребёнок хуже, то они меняются местами. На новом месте операция для текущего элемента повторяется. Так просеивается каждый элемент начиная с номера [n/2] (почему не с номера n) и кончая первым.
Вторая фаза сортировки состоит из последовательного выполнения следующих действий: взять самый худший элемент (он сейчас на первом месте, а должен быть на последнем), поменять его местами с последним, сократить на единицу число вершин в дереве, отцепив последний элемент, "утопить" верхний элемент дерева, чтобы восстановить иерархическую упорядоченность. В конце концов, когда все элементы массива окажутся отцеплены от дерева, массив будет полностью упорядочен.


Автор: Г.Г. Удов. Технология визуализации: Г.А. Корнеев. Руководитель: А.А. Шалыто

Санкт-Петербургский государственный университет информационных технологий, механики и оптики.
Кафедра "Компьютерные технологии"

Copyright 2003 by Georgy G. Udov