Студопедия — Алгоритм УлПир
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Алгоритм УлПир






 

Для того чтобы отсортировать массив методом Пирамиды, необходимо выполнить такую последовательность действий:

 

0-й шаг: Превратить исходный массив в пирамиду (с помощью просеивания).

 

1-й шаг: Для N-1 элементов, начиная с последнего, производить следующие действия:

поменять местами очередной "рабочий" элемент с первым;

просеять (новый) первый элемент, не затрагивая, однако, уже отсортированный хвост последовательности (элементы с i-го по N-й).

 

Реализация алгоритма УлПир

 

Часть программы, реализующую нулевой шаг алгоритма УлПир, мы привели в пункте "Просеивание", поэтому здесь ограничимся только реализацией основного шага 1:

 

for i:= N downto 2 do

begin x:= a[1];

a[1]:= a[i];

a[i]:= x;

j:= 1;

while j<=((i-1)div 2) do

begin k:= 2*j;

if (k+1<=i-1) and (a[k]<a[k+1])

then k:= k+1;

if a[k]>a[j]

then begin x:= a[j];

a[j]:= a[k];

a[k]:= x;

j:= k

end

else break

end

end;

 

Пример. Продолжим сортировку массива, для которого мы уже построили пирамиду: [12,11,8,7,10,6,5,4,2,9,3,1]. С целью экономии места мы не будем далее прорисовывать структуру пирамиды, оставляя это несложное упражнение читателям. Подчеркивание будет отмечать элементы, участвовавшие в просеивании, а полужирный шрифт - элементы, исключенные из дальнейшей обработки:

 

1) Меняем местами a[1] и a[12]: [1,11,8,7,10,6,5,4,2,9,3,12];

2) Просеиваем элемент a[1], получаем: [11,10,8,7,9,6,5,4,2,1,3,12];

3) Меняем местами a[1] и a[11]: [3,10,8,7,9,6,5,4,2,1,11,12];

4) Просеиваем a[1], получаем: [10,9,8,7,3,6,5,4,2,1,11,12];

5) Меняем местами a[1] и a[10]: [1,9,8,7,3,6,5,4,2,10,11,12];

6) Просеиваем элемент a[1]: [9,7,8,4,3,6,5,1,2,10,11,12];

7) Меняем местами a[1] и a[9]: [2,7,8,4,3,6,5,1,9,10,11,12];

8) Просеиваем элемент a[1]: [8,7,6,4,3,2,5,1,9,10,11,12];

9) Меняем местами a[1] и a[8]: [1,7,6,4,3,2,5,8,9,10,11,12];

10) Просеиваем элемент a[1]: [7,4,6,1,3,2,5,8,9,10,11,12];

11) Меняем местами a[1] и a[7]: [5,4,6,1,3,2,7,8,9,10,11,12];

12) Просеиваем элемент a[1]: [6,4,5,1,3,2,7,8,9,10,11,12];

13) Меняем местами a[1] и a[6]: [2,4,5,1,3,6,7,8,9,10,11,12];

14) Просеиваем элемент a[1]: [5,4,2,1,3,6,7,8,9,10,11,12];

15) Меняем местами a[1] и a[5]: [3,4,2,1,5,6,7,8,9,10,11,12];

16) Просеиваем элемент a[1]: [4,3,2,1,5,6,7,8,9,10,11,12];

17) Меняем местами a[1] и a[4]: [1,3,2,4,5,6,7,8,9,10,11,12];

18) Просеиваем элемент a[1]: [3,1,2,4,5,6,7,8,9,10,11,12];

19) Меняем местами a[1] и a[3]: [2,1,3,4,5,6,7,8,9,10,11,12];

20) Просеивать уже ничего не нужно;

21) Меняем местами a[1] и a[2]: [1,2,3,4,5,6,7,8,9,10,11,12];

22) Просеивать ничего не нужно, сортировка закончена.

 

Эффективность алгоритма УлПир

 

Пирамидальная сортировка хорошо работает с большими массивами, однако на маленьких примерах (N<20) выгода от ее применения может быть не слишком очевидна.

 

В среднем этот алгоритм имеет сложность, пропорциональную N*log N.

Быстрая сортировка

 

Существует еще один метод улучшенной сортировки, имеющий среднюю сложность порядка N*log N: так называемая Быстрая сортировка. Этот алгоритм является усовершенствованием обменных сортировок. Его реализация наиболее удобна в рекурсивном варианте, поэтому мы вернемся к ее изучению после того, как познакомимся с рекурсивными процедурами и функциями (см. лекцию 9).







Дата добавления: 2015-03-11; просмотров: 427. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Этапы трансляции и их характеристика Трансляция (от лат. translatio — перевод) — процесс синтеза белка из аминокислот на матрице информационной (матричной) РНК (иРНК...

Условия, необходимые для появления жизни История жизни и история Земли неотделимы друг от друга, так как именно в процессах развития нашей планеты как космического тела закладывались определенные физические и химические условия, необходимые для появления и развития жизни...

Метод архитекторов Этот метод является наиболее часто используемым и может применяться в трех модификациях: способ с двумя точками схода, способ с одной точкой схода, способ вертикальной плоскости и опущенного плана...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия