русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Принцип работы пирамидальной сортировки


Дата добавления: 2013-12-23; просмотров: 3047; Нарушение авторских прав


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

Улучшенные методы сортировки. Пирамидальная сортировка.

Её эффективность.

Пирамидальная сортировка – это улучшенный алгоритм сортировки простым выбором. Данное улучшение было разработано р.флойдом. Он предложил перестраивать линейный массив в пирамиду, которая моделирует бинарное дерево. В таком дереве два нижних соседних элемента всегда имеют один элемент, который расположен над ними на уровень выше (рис. 15.1). Минимальный элемент ищется среди этих двух соседних элементов.

Все элементы линейного массива можно распределить последовательно, начиная с первого элемента и кончая последним элементом, используя определённый принцип расположения элементов (рис. 15.1). Само действие «распределить последовательно» означает, что элементы данного массива будут выбираться в определённом заданном порядке, так что бы виртуально моделировалась заданная конструкция.

A[1]
A[2] A[3]
A[4] A[5] A[6] A[7]
A[8] A[9] A[10] A[11] A[12] A[13] A[14] A[15]
               

Рисунок 15.1 принцип расположения элементов массива в пирамиде

Сначала производится просеивание – это первая часть алгоритма, а затем осуществляется основная сортировка – это вторая часть алгоритма.

Первая часть алгоритма.Первая часть алгоритма – просеивание, необходима для преобразования исходного массива в пирамиду, в которой каждый верхний элемент «опирается» на два меньших элемента. Эту часть назвали просеиванием, так как данная операция напоминает процесс разделения смеси на фракции в соответствии с их размерами, где сначала задерживаются большие частицы, а потом всё более мелкие.

Из рисунка 15.1 видно, что любой элемент a[i], где 1<=i<=n div 2, «опирается» на элементы a[2*i] и a[2*i+1]. Таким образом формируются тройки из элементов. Такой тройкой являются элементы a[6], a[12] и a[13].



Для просеянной пирамиды необходимо, чтобы выполнялось следующее условие – в каждой тройке максимальный элемент должен находиться «сверху», т.е. A[6] должен быть больше a[12] и a[13]. Исходный массив сначала может и не удовлетворять этому свойству, поэтому его немного перестраивают, т.е. Просеивают в соответствии с приведённым условием. В процессе просеивания изменяется последовательность элементов в массиве.

Начинается просеивание «снизу». Половина элементов с ((n div 2)+1)-го элемента по n-й элемент являются основанием пирамиды, их просеивать не нужно. Но для всех остальных элементов, продвигаясь от конца массива к его началу, проверяются тройки элементов a[i], a[2*i] и a[2*i+1], в которых перемещают максимальный элемент «наверх», т.е. В элемент a[i]. Если в результате такого одного прохода снизу вверх была нарушена пирамидальность в других ниже лежащих тройках элементов, то необходимо снова произвести просеивание, но уже сверху вниз к её основанию.

Вторая часть алгоритма.Для n-1 элементов, начиная с последнего, нужно осуществить следующие действия. Сначала нужно поменять местами очередной «рабочий» элемент с первым. Потом просеивается новый первый элемент сверху вниз так, чтобы не затрагивалось уже отсортированное основание, т.е. Элементы с i-го по n-й.

Первым рабочим элементом является n, а потом n-1, затем n-2 и т.д.

Во второй части алгоритма должно быть осуществлено n-1 перестановок. При первой перестановке самый верхний элемент становится последним элементом и становится первым элементом уже отсортированного основания. После второй перестановки другой верхний элемент перемещается на место предпоследнего элемента массива и так же входит в уже отсортированное основание. Процесс повторяется до тех пор пока в не отсортированной части не останется один самый маленький элемент. Такой способ просеивания помогает вытолкнуть на вершину пирамиды самый большой элемент, а потом его переместить в начало отсортированной последовательности, т.е. В её уже отсортированное основание.



<== предыдущая лекция | следующая лекция ==>
Эффективность алгоритма сортировки шелла | Ориентированные и неориентированные графы. Алгоритмы на графах


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.