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

Сбалансированное многопутевое слияние

В основе метода внешней сортировки сбалансированным многопутевым слиянием является распределение серий исходного файла по m вспомогательным файлам B1, B2, ..., Bm и их слияние в m вспомогательных файлов C1, C2, ..., Cm. На следующем шаге производится слияние файлов C1, C2, ..., Cm в файлы B1, B2, ..., Bm и т.д., пока в B1 или C1 не образуется одна серия. Многопутевое слияние является естественным развитием идеи обычного (двухпутевого) слияния Преимуществом сортировки сбалансированным многопутевым слиянием является то, что число проходов алгоритма оценивается как O(log n) (n - число записей в исходном файле), где логарифм берется по основанию n. Порядок числа копирований записей - O(log n). Конечно, число сравнений не будет меньше, чем при применении метода простого слияния. Число перестановок = n* log n.

53. Особенности естественного слияния. Сортировка, при которой сливаются 2 упорядоченные серии – упорядоченное слияние.

Пример 2-путевого 2-фазного естественного слияния.

А – 17 31 05 59 13 41 43 67 11 23 29 47

В – 17 31 13 41 43 67

С – 05 59 11 23 29 47

А – 05 17 31 59 11 13 23 41 29 43 47 67

В – 05 17 31 59

С – 11 13 23 29 41 43 47 67

Сорт. естеств. слиянием заканчивается, если:

-на фазе слияния осталась ровно 1 серия;

-второй по счету вспомогательный файл для однофазной сорт после распределения серий остался пустым. Так как признаком конца серии в естеств. слиянии является результатом слияния двух соседних элементов, то две/несколько серий, распределенных друг за другом, могут объединяться в одну.

Ex - 1 2 9 3 39 11 4 18 13 5 16 24 15 4 25 17 317

F1 – 1 2 9 11 13 15 17 317

3 39 4 18 5 16 24 4 25 //стремиться вверху собрать одну серию.

Естественное слияние наз. сбалансированным, если после фазы равпределения кол-во серий во вспомогательных файлах отличается друг от друга не более чем на 1. В противном случае слияние считается несбалансированным. Чтобы в сбалансир. слиянии серии распределялись корректно, необходимо во время записи очередной серии в файл выполнять следующую проверку: если серия является продолжением предыдущей, то записать в этот файл не 1, а 2 серии:

F1 – 1 2 9 11 4 18 5 16 24 17 317

3 39 13 15 4 25

54. Метод основан на том, что имеется несколько входных файлов с разным числом серий и только 1

выходной файл. При каждом проходе серии из входных файлов сливаются, пока входной файл с наименьшим числом серий не будет исчерпан. Тогда освобожденный файл становиться входным и начинается новый проход. Серии из всех оставшихся файлов сливаются в выходной файл.

Конец сортировки: все серии => 1 серия.

f1 f2 f3

исход. сост. 13 8

проход1 5 0 8

проход2 0 5 3

проход3 3 2 0

Многофазная сортировка более эффективна, чем сбалансир. многопутевая, т.к. при одном и том же

кол-ве файлов число сливаемых файлов больше.

Число проходов при многофазной сортировке будет оптимальным, если количество серий во вход.

файлах будет подчиняться числам Фибоначчи. (Послед-ть Фибоначчи – посл-ть, где каждый эл-т = сумме 2-х предыдущих – 0 1 1 2 3 5 8 13 21…)

Число сравнений в файлах при оптимальном распределении по (f-1) файлов должно быть числами Фибоначчи, порядком (f-2). Недостающее число серий можно дополнять пустыми сериями, распределяя их равномерно между входными файлами. Поскольку число серий в исходном файле может не обеспечивать возможность такого распределения серий, применяется метод добавления пустых серий, которые в дальнейшем как можно более равномерного распределяются между промежуточными файлами и опознаются при последующих слияниях. Понятно, что чем меньше таких пустых серий, т.е. чем ближе число начальных серий к требованиям Фибоначчи, тем более эффективно работает алгоритм.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]