Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / LAB1_New.doc
Скачиваний:
36
Добавлен:
23.03.2015
Размер:
1.32 Mб
Скачать
    1. Выбор из дерева

Время работы этого метода пропорционален N(log2N).

Аналог: турнир с выбыванием.

Джо

Джо │ Дик

│ │

Джим │ Джо Дик │ Стив

Джим Дон Джо Джек Дик Билл Клайд Стив

Чтобы определить второго по силе игрока, надо заставить сыграть Джека с Джимом, а победителя с Диком (т.е. всего два матча). Вообще можно “вывести” игрока, находящегося в корне дерева, и заменить его чрезвычайно слабым игроком. Подстановка этого слабого игрока означает, что первоначально второй по силе спортсмен станет теперь наилучшим, и именно он окажется в корне, если вновь вычислить победителей в верхних уровнях дерева.

3.2.1. “Заглядывание вперед” при выборе из дерева (Айверсон)

На Рис 24 применен следующий принцип: когда победитель матча на нижнем уровне поднимается вверх, то на нижнем уровне его сразу же можно заменить на -∞. Когда же победитель перемещается вверх с одного разветвления на другое, то его можно заменить игроком, который в конце концов все равно должен подняться на его прежнее место (а именно наибольший из двух ключей, расположенных под ним). Выполнив эту операцию столько раз, сколько возможно, мы и придем к Рис 24.

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

Преимущество:

1) позволяет избежать лишних сравнений с -∞.

2) зачастую значительно проще продвигаться вниз от узла k к узлам 2k и 2k + 1, чем вверх.

    1. Пирамидальная сортировка (алгоритм h)

С ростом N пирамидальная сортировка превзойдет по скорости метод Шелла, но никогда не станет лучше, чем быстрая сортировка. С другой стороны, быстрая сортировка эффективна лишь в среднем; в наихудшем же случае ее время работы пропорционально N^2. Пирамидальная же сортировка обладает тем интересным свойством, что для нее наихудший случай не намного хуже среднего. Это первый из рассмотренных до сих пор методов сортировки, время работы которого заведомо имеет порядок N(log2N). Сортировка посредством слияния тоже обладает этим свойством, но она требует больше памяти.

  1. Сортировка слиянием

Слияние означает объединение двух или более упорядоченных файлов в один упорядоченный файл.

    1. Двухпутевое слияние (Алгоритм m)

Пусть N = n + m. Здесь N – объем всего файла; n и m – размеры сливаемых подфайлов. Общий объем работы пропорционален n + m. Наибольший эффект достигается при n = m. Задача слияния более простая, чем задача сортировки. Задачу сортировки можно свести к слиянию, сливая все более длинные подфайлы, до тех пор, пока не будет отсортирован весь файл. Такой подход можно рассматривать как развитие идеи сортировки вставками: вставка нового элемента в упорядоченный файл – частный случай слияния при n = 1. Чтобы ускорить процесс вставок, можно рассмотреть вставку сразу нескольких элементов за один раз, группируя несколько операций операций, а это естественным образом приведет к общей идее сортировки методом слияния.

Соседние файлы в папке AlgStr