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

4.1.1. Естественное двухпутевое слияние (Алгоритм n)

“Свечка” сжигается с двух концов.

      1. Сортировка простым двухпутевым слиянием (Алгоритм s)

Алгоритм простого двухпутевого слияния очень напоминает алгоритм N.

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

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

В случае внутреннего слияния связанное распределение памяти имеет бесспорное преимущество перед последовательным распределением: требуется меньше памяти и программа работает на 10-20% быстрее.

Рассмотрим теперь предыдущие алгоритмы с точки зрения структур данных. Почему нам необходима память под 2N, а не под N записей? Причина относительно проста: мы работаем с четырьмя списками переменного размера (два “входных списка” и два “выходных списка” в каждом просмотре). Но в любой момент времени половина памяти не используется, и после некоторого размышления становится ясно, что в действительности для наших четырех списков следовало бы воспользоваться связанным распределением памяти.

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

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