Сортировка слиянием - пример использования принципа «разделяй
и властвуй». Сначала задача разбивается на несколько подзадач меньшего размера.
Затем эти задачи решаются с помощью рекурсивного вызова или непосредственно,
если их размер достаточно мал. Наконец, их решения комбинируются, и получается
решение исходной задачи.
Для решения задачи сортировки эти
три этапа выглядят так: 1) Сортируемый массив разбивается на две половины
меньшего размера; 2) Каждая из получившихся половин сортируется отдельно; 3) Два
упорядоченных массива половинного размера соединяются в один.
Рекурсивное разбиение задачи на
меньшие происходит до тех пор, пока размер массива не достигнет единицы (любой
массив длины 1 можно считать упорядоченным).
Нетривиальным этапом является
соединение двух упорядоченных массивов в один.
Основная идея решения состоит в
попарном сравнении очередных элементов каждого фрагмента, выяснении, какой из
элементов меньше, переносе его во вспомогательный массив D (для простоты) и
продвижении по тому фрагменту массива, из которого взят элемент. При этом
следует не забыть записать в D оставшуюся часть того фрагмента, который не успел
себя "исчерпать".