Cортировка слиянием с использованием O(1) дополнительной памяти

Материал из Викиконспекты
Перейти к: навигация, поиск

Научившись сливать с использованием O(1) дополнительной памяти оставшееся решение задачи становится очевидным. Будем сливать не рекурсивно, чтобы сэкономить память в стеке. Пусть на i-том шаге у нас отсортированы подряд идущие, не пересекающиеся куски массива размером [math] 2^i [/math](за исключением последнего, его размер может быть меньше). Тогда сольем сначала первый и второй кусок, потом третий и четвертый и так до последнего. Если последнему куску нету пари, то просто ничего не делаем.

Слияние

Шаг 1

Разобьем наш массив на группы

Шаг 2

Ссылки и литература