Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы и алгоритмы сортировки и обработки данных / Методические указания для заочников (часть 1).doc
Скачиваний:
35
Добавлен:
01.05.2014
Размер:
148.99 Кб
Скачать

3.1.6. Сортировка с помощью дерева

Идея сортировки состоит в следующем: пусть задан массив состоящий из N=8 элементов

44 55 12 42 94 18 06 67

I этап. - сделаем N/2 сравнений и определим в каждой паре наименьшее значение. Затем сделаем N/4 сравнений и определим наименьший из пары уже выбранных меньших и т.д.

06

/ \

12 06

/ \ / \

44 12 18 06

/ \ / \ / \ / \

44 55 12 42 94 18 06 67

II этап. - запоминаем наименьший элемент и спускаемся вдоль его и исключаем его из дерева, путем замены его на пустой элемент.

__

/ \

12 __

/ \ / \

44 12 18 __

/ \ / \ / \ / \

44 55 12 42 94 18 __ 67

III этап. - заменяем пустой элемент на элемент из соседней ветви в промежуточных вершинах.

12

/ \

12 18

/ \ / \

44 2 18 67

/ \ / \ / \ / \

44 55 12 42 94 18 __ 67

Затем повторяются этапы I и II до тех пор пока все дерево не будет пустым.

Количество сравнений: C = logn

3.1.7. Сортировка с помощью разделения(метод Хоара)

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

Исходный массив: 44 55 12 42 94 06 18 67

барьер: 42

18 55 12 42 94 06 44 67

18 06 12 42 94 55 44 67

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

Одной из трудностей данного методы является выбор барьера (медианы).

Медианой для n элементов называется элемент, меньший или равный половине из n элементов и больший или равный другой половине из n элементов.

Например медиана для элементов: 16 12 99 95 18 87 10 равна 18. Т.о. задача поиска медианы тесно связана с проблемой сортировки, т.к. очевидный метод определения медианы заключается в том, чтобы отсортировать n элементов и из них выбрать средний элемент. Однако разделение, выполняемое в методе Хоара позволяет отыскать медиану значительно быстрее, т.к. здесь поиск медианы просто частный случай K=n/2.

Число сравнений: С = n * logn

Число пересылок: M = n * log(n)/6

3.1.8.Сортировка вычислением адреса

В данной сортировки используется метод преобразования значений в адрес таблицы. Каждому элементу массива присваивается некоторый адрес, например целая часть от деления элемента на некоторое число. Но может случится так, что двум и более элементам будет присвоен один и тот же адрес. Поэтому для перемещения величины по вычисленному адресу необходимо проверить, не занято ли уже это место. Если это так, то перемещаемая величина сравнивается с величиной, уже находящейся по этому адресу, и выполняется линейный поиск в требуемом направление для того, чтобы найти место для новой величины. В случае нахождение свободного пространства туда помещается рассматриваемый элемент. Если нет свободного пространства с учетом упорядоченности элементов, то необходимо переместить некоторые предыдущие элементы для освобождения места.

Пример :

номер данный 1 2 3 4 5 6 7 8 9 10 11 12

данные 19 13 05 27 01 26 31 16 02 09 11 21

вычисл. адрес 6 4 1 9 0 8 10 5 0 3 3 7

0 -- -- -- -- 01 01 01 01¦ 01x 01 01 01

1 -- -- 05 05 05 05 05 05V 05 05 05 05

2 -- -- -- -- -- -- -- -- 05 05x 05 05

3 -- -- -- -- -- -- -- -- -- 09¦ 09x 09

4 13 13 13 13 13 13 13 13 13 13¦ 11 11

5 -- -- -- -- -- -- -- 16 16 16¦ 13 11

6 19 19 19 19 19 19 19 19 19 19¦ 16 13

7 -- -- -- -- -- -- -- -- -- --¦ 19 16

8 -- -- -- -- -- 26 26 26 26 26V 26 19x

9 -- -- -- -- 27 27 27 27 27 27 27 21

10 -- -- -- -- -- -- 31 31 31 31 31 27

11 -- -- -- -- -- -- -- -- -- -- -- 31

В рассмотренном примере в таблице размещается 12 элементов. Наибольшее значение элемента меньше 36, поэтому преобразование адреса состоит в деление значения на 3 и выделения целой части, так целая часть 16 будет 5. Знак "х" указывает на конфликт между значениями, а стрелка на необходимость и направление перемещения.