Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сиаод_ответы_16_79.doc
Скачиваний:
209
Добавлен:
11.05.2015
Размер:
7.84 Mб
Скачать

37 2 – 3 – 4 Деревья. Основные свойства. Высота 2 – 3 – 4 дерева.

Узел может быть двух-, трех- и четырехместным.

1 TL < S; TR > S

2 TL < S; S < TM < L; TR > L

3 TL < S; S < TML < M; M < TMR < L; TR > L

Свойства четырехместного узла:

1 может быть корнем

2 может иметь три сына и два элемента данных

3 может иметь четыре сына и три элемента данных

Максимальная высота 2-3-4 - дерева h=(log2n+1), и вставка нового элемента, как правило, не изменяет ее за исключением случая, когда разделяется корень дерева.

38 Добавление элемента в 2 – 3 – 4 дерево.

Разделение четырех местного узла (остальное как в 2-3 дереве)

1 Корень

2 Родитель двухместный

3 Родитель трехместный

39. Стратегии внутренней сортировки.

Вспомним задачу сортировки в общем виде. Даны элементы . Сортировка означает перестановку этих элементов в порядке, так что при заданной функции упорядочениясправедливо отношение.

Сортировка называется внутренней, если она происходит в оперативной памяти.

1)Выборка – выбирают наименьший элемент и помещают в текущую позицию в выходном потоке.

2)Включение – элементы обрабатываются по одному в произвольном порядке, вставка нового Эл-та в соответствии с отношением его к уже имеющимся элементам.

3)Обмен – элементы сравниваются и при необходимости меняются местами, пока не будут упорядочены.

4)Распределение – элементы распределяются по подмножествам (младшие – в одно, старшие – в другое, промежуточные – в промеж)

5)Слияние – сортированные подмножества объединяются в более крупные, используются методы слияния.

40. Турнирная сортировка.

Этот метод сортировки получил свое название из-за сходства с кубковой системой проведения спортивных соревнований: участники соревнований разбиваются на пары, в которых разыгрывается первый тур; из победителей первого тура составляются пары для розыгрыша второго тура и т.д. Алгоритм сортировки состоит из двух этапов. На первом этапе строится дерево: аналогичное схеме розыгрыша кубка.

Например, для последовательности чисел a:

16 21 8 14 26 94 30 1

такое дерево будет иметь вид пирамиды, показанной на рисунке:

В примере приведена программная иллюстрация алгоритма турнирной сортировки.

Алгоритм:

Строится двоичное дерево (глубина 2к≥n) сортируемых ключей:

1.все ключи листья

2.из пар выбирается мин и становится узлом порядка k-1, процесс продолжается пока корнем дерева не станет мин эл-т

3.переправляем этот эл-т в исходную последовательность

4.спускаемся по дереву и заменяем значения мин элемента на +

5.все промежуточные узлы заменяем минимальными из оставшихся.

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

Число сравнений (n-1)log2n: время работы O(log2n)

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

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

- Неубывающая;

-Невозрастающая;

Метод простого выбора. N(n-1) сравнений, n-1 перестановок.

Пирамидальная сортировка (сложность nlogn, неустойчивый алгоритм)

Дерево называется пирамидально упорядоченным, если ключ в каждом его узле ≥ ключам всех его потомков. Сортирующее дерево – совокупность ключей, образующих полное пирамидально упорядоченное дерево. Для реализации дерева используется массив([i/2]-родитель, 2i, 2i+1- потомки). При такой организации прохождение по дереву проходит более быстро с большой экономией памяти. Поддержание основного свойства пирамид дерева.

Heapify(A[1..n],i)

  1. L←2*i

  2. R←2*i+1

  3. If (L<=Head_size) and (A[L]>A[i])

  4. Then largest←L

  5. Else largest←i

  6. If (R<=Head_size) and (A[k]>A[largest])

  7. Then largest←R

  8. If largest≠I then A[i]A[largest]

  9. Hepify(A,largest)

Построение пирамиды

BiuldHeap(A[1..n])

  1. Heap_size←n

  2. For i=└n/2┘ downto 1 do

  3. Heapify(a,i)

  4. End for

Сортировка

HeapSort(A[1..n])

  1. BuildHeap(a)

  2. For I = n downto 2 do

  3. A[i]↔A[1]

  4. Heapsize←Heapsize-1

  5. Heapity(A,1)

  6. End for