Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации лекций по ТОИ / 15-Файлы, внешняя сортировка.pps
Скачиваний:
58
Добавлен:
02.06.2015
Размер:
942.08 Кб
Скачать

Сортировка файлов: четырехленточная сортировка – пример

Файл F: 11, 14, 8, 9, 51, 15, 86, 98, 13, 4, 6, 10

F1: 11, 14, 15, 86, 98, 4, 6, 10

 

F2: 8, 9, 51, 13

 

 

 

F3: 8, 9, 11, 14, 15, 51, 86, 98

 

F4: 4, 6, 10, 13

 

 

 

181

Сортировка файлов: четырехленточная сортировка – пример

Файл F: 11, 14, 8, 9, 51, 15, 86, 98, 13, 4, 6, 10

F1: 11, 14, 15, 86, 98, 4, 6, 10

F3: 8, 9, 11, 14, 15, 51, 86, 98

F2: 8, 9, 51, 13

F4: 4, 6, 10, 13

F1: 4, 6, 8, 9, 10, 11, 13, 14, 15, 51, 86, 98

 

F2:

 

 

 

182

Результирующий файл

 

Сортировка файлов: Фибоначчиева сортировка

Если отказаться от сбалансированности, то можно использовать стратегию, называемую многофазной сортировкой. В этом случае к двум сливаемым файлам, F1 и

F2 добавляется третий рабочий файл F3.

Предположим, что исходные файлы при слиянии содержат неравные количества отрезков L(F1) и L(F2).

Пример – число отрезков в файлах равно числам Фибоначчи. Рассмотрим фазы сортировки.

183

Сортировка файлов: Фибоначчиева сортировка

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

При этом в рабочем файле F3 появится min (L(F1), L(F2))

отрезков, в одном из исходных файлов останется max (L(F1), L(F2)) – min (L(F1), L(F2)),

а другой будет пустым.

Например, если L(F1) > L(F2), то файл F2 станет пустым, а в файле F1 останется L(F1) – L(F2) отрезков.

На этом первая фаза завершается.

184

Сортировка файлов: Фибоначчиева сортировка

На следующей, второй, фазе рабочим становится файл, ставший пустым на предыдущей фазе.

Таким образом, в файл F2 сливаются остаток файла F1 и файл, сформированный на предыдущей фазе, т.е. F3.

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

Анализ изменений длин файлов показывает, что соотношения длин должны удовлетворять следующим равенствам:

Li+1 = Li + Li-1, …, L1 = 1, L0 = 0.

Эти равенства дают последовательность чисел Фибоначчи: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, . . .

Следовательно, метод многофазной сортировки непосредственно применим к файлам, длины которых (измеряемые количеством

185 отрезков) являются соседними числами Фибоначчи.

Сортировка файлов: Фибоначчиева сортировка – пример

Файл F: 8, 9, 7, 6, 5, 4, 3, 2, 0, 1

F1: 8, 9, 6, 4, 3, 2

 

 

 

F2: 7, 5, 0, 1

 

 

 

F3: 7, 8, 9

186

Сортировка файлов: Фибоначчиева сортировка – пример

Файл F: 8, 9, 7, 6, 5, 4, 3, 2, 0, 1

F1: 8, 9, 6, 4, 3, 2

 

 

 

F2: 7, 5, 0, 1

 

 

 

F3: 7, 8, 9, 5, 6

187

Сортировка файлов: Фибоначчиева сортировка – пример

Файл F: 8, 9, 7, 6, 5, 4, 3, 2, 0, 1

F1: 8, 9, 6, 4, 3, 2

 

 

 

F2: 7, 5, 0, 1

 

 

 

F3: 7, 8, 9, 5, 6, 0, 1, 4

188

Сортировка файлов: Фибоначчиева сортировка – пример

Файл F: 8, 9, 7, 6, 5, 4, 3, 2, 0, 1

F1: 8, 9, 6, 4, 3, 2

 

 

 

F2: 7, 5, 0, 1

 

 

 

F3: 7, 8, 9, 5, 6, 0, 1, 4

F2: 3, 7, 8, 9

189

Сортировка файлов: Фибоначчиева сортировка – пример

Файл F: 8, 9, 7, 6, 5, 4, 3, 2, 0, 1

F1: 8, 9, 6, 4, 3, 2

 

 

 

F2: 7, 5, 0, 1

 

 

 

F3: 7, 8, 9, 5, 6, 0, 1, 4

F2: 3, 7, 8, 9, 2, 5, 6

190

Соседние файлы в папке Презентации лекций по ТОИ