![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Чтобы найти самого самого, минимального и максимального и т.д. из некоторого множества, воспользуемся алгоритмом олимпийской системы.
(олимпийская система, попарно)
40
4 5 20 7 6 7 14 40
20
40 20 7 14 14
40 14 7
![]() | |||
![]() |
Такая организация в виде дерева обеспечивает минимальное сравнение ключей. В корне располагается наибольший или наименьший элемент, который затем извлекается из множества. На его место претендует наибольший (наименьший) из заместителей. Замещение вакантного места происходит до листа (дерева). А лист заменяется на – ∞, т.е. наименьшее число.
В 1968 году был предложен алгоритм, в котором отсутствовал элемент – ∞, а элементы располагались внутри самой последовательности. Такой алгоритм получил название пирамидально сортировки. Пирамидой называется последовательность Ключей к1 к2 кn, в которой выполняется Kjdiv 2 >= Kj;,1 <= j div 2 <= N, причем ключи занумерованы в следующем порядке
1 K1
K2 2 3 K3
2j 4 2j+1 5 2j 6 7 2j+1
8 9 10 11 12 13 14 15
![]() | |||||
![]() | ![]() |
, то у узла K[j] сыновья будут с индексами 2j и 2j+1. Таким образом, в соответствии с формулой 1 пирамиды любой отец в пирамиде не превышает наименьшего из сыновей из своих сыновей, тогда корнем будет наименьший во всей последовательности. Алгоритм пирамидальной сортировки состоит из двух этапов:
1. Располагает произвольную последовательность в виде пирамиды
2. Последовательно исключаем вершину пирамиды и восстанавливаем условие j1 внутри последовательности.
На обоих этапах используется один и тот же алгоритм, называемый алгоритмом протаскивания, который заключается объединении двух уже сформированных пирамид так, чтобы прежние пирамиды оказались под деревьями в корне, а в корне расположился наименьший элемент. Последовательность из одного элемента является пирамидой, поэтому создание большой пирамиды первого этапа будем начинать с элемента, имеющего хотя бы одного сына (двигаясь, справа налево в массиве).
15 7 5 14 40 6 7 20 -2
II -2 4 5 14 7 6 7 15
40 4 5 20 7 6 7 14
1 2 3 4 5 6 7 8
4 5
10 -2 6 7
14 15 7
В отличие от Хоару, трудоемкость (быстродействие) пирамидальной сортировки не зависит от частного случая взаимного расположения элементов: даже уже упорядоченную последовательность, первый этап переразместит в виде пирамиды по трудоемкости максимально возможного количества обменов (протаскивания) элементов, которая равна высоте дерева, высота сбалансированного дерева равна двоичному логарифму.
Z log 2(n-i)
I N div 2
Log2(N(N-1))
0(f параметр) = const n log2N
Дата публикования: 2015-01-10; Прочитано: 334 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!