Внешние сортировки
1) простые(слияние):
Простое:
-Без использования внутр. Сортировки
-С использованием
Естественное:
-Несбалансированное
-Сбалансированное
2) Улучшенные(естественное сбалансированное слияние):
-Многофазная
-Каскадная
Характеристики:
- двухпутевое
-многопутевое
-двухфазные
-однофазные
Н. Вирт дает следующее определение слияния: "Слияние означает объединение двух (или более) последовательностей в одну-единственную упорядоченную последовательность с помощью повторяющегося выбора из доступных в данный момент элементов". Другими словами, сначала серии распределяются на два или несколько вспомогательных файлов. Распределение серий идет поочередно, то есть первая серия записывается в первый вспомогательный файл, вторая — во второй и так далее. После того как произошла запись в последний файл, опять начинается запись серии в первый вспомогательный файл. После распределения всех серий, они объединяются в более длинные упорядоченные отрезки: из каждого вспомогательного файла берется по одной серии, и они сливаются. Если в каком-то файле серия заканчивается, то следующая пока не рассматривается. Сформированный более длинный упорядоченный отрезок записывается либо в исходный файл, либо в какой-то из вспомогательных файлов, это зависит от вида сортировки. После того как все серии из всех вспомогательных файлов объединены в новые серии, опять начинается их распределение. Так продолжается до тех пор, пока все данные не будут упорядочены.
Можно выделить следующие две характеристики сортировки слиянием.
□ Количество вспомогательных файлов, на которые идет распределение серий. Если данные распределяются на два вспомогательных файла, то сортировка называется двухпутевьш слиянием, если на N (N > 2) вспомогательных файлов, то — многопутевым слиянием.
□ Количество фаз в реализации сортировки. Фазой называются действия по однократной обработке всего множества. Наименьший же процесс, повторение которого составляет процесс сортировки, называется проходом или этапом. В двухфазной сортировке отдельно реализуются две фазы: распределение и слияние. После того как произошло распределение данных по вспомогательным файлам, они объединяются и записываются в исходный файл. В однофазной сортировке обе эти фазы объединены в одну. Во время слияния серий данные не только объединяются, но и сразу же распределяются по другим вспомогательным файлам, которые становятся исходными для следующего прохода. Однофазная сортировка * более эффективна, чем двухфазная, поскольку фаза распределения фактически не относится к сортировке, так как во время этой фазы элементы не переставляются и не упорядочиваются, а количество операций переписи данных такое же, как и на фазе слияния. Однако количество вспомогательных файлов, которые требуются для однофазной сортировки, больше, чем то, которое требуется для двухфазной сортировки.