Деление на ноль

Внешняя сортировка: интерактивная анимация (External Merge Sort)

Сортировка огромных массивов данных, не помещающихся в оперативную память

Визуализация

Данные: Случайные
Данные:
Диск (вход)
Память (вмещает: 4)
Прогоны (временные файлы)
Результат (выход)
Легенда цветов
не проверен сравниваем меняем местами на своем месте
Нажмите "Пуск" или листайте по шагам.
I/O-обмены: 0 Фаза: Начало Шаг: 0 / 0 Сложность по времени: -

Как работает внешняя сортировка слиянием

Идея алгоритма. Когда данных больше, чем помещается в оперативной памяти (например, нужно отсортировать файл на 100 ГБ при памяти 4 ГБ), обычные алгоритмы не справятся. Решение - разделить данные на куски, которые влезают в память, отсортировать их и слить вместе.

Сложность алгоритма

Сложность - это оценка того, как быстро растет потребление ресурса при росте длины массива n. Ресурса у алгоритма два, поэтому и оценки две: по времени и по памяти. Обе записывают через O-нотацию - у нас есть отдельная анимация о том, как читать такие записи.

По времени

Показывает, как растет число операций (здесь это сравнения и обмены) при росте n. Лейбл "Сложность" под визуализацией - время, которое получилось фактически на ваших данных.

Характеристика Оценка Комментарий
Число сравнений O(n log n) Такое же, как у обычной сортировки слиянием в памяти
Число обращений к диску (I/O) O(n log(n/M)) Каждый элемент считывается и записывается при создании прогонов и на каждом уровне слияния

По памяти

Показывает, сколько дополнительной памяти нужно алгоритму. Сам входной массив в эту оценку не входит: дополнительной считается память сверх него.

Характеристика Оценка Комментарий
Дополнительная память (RAM) O(M) M - размер доступной памяти. Мы читаем данные блоками по M элементов
Дополнительная память (Диск) O(n) Требуется место на жестком диске для хранения временных файлов-прогонов

Устойчивость алгоритма

Устойчивой называется сортировка, которая не меняет взаимный порядок равных элементов. Пример: сортируем учеников по оценке, а внутри одной оценки они уже стояли по алфавиту. Устойчивая сортировка сохранит алфавитный порядок внутри каждой оценки, неустойчивая - может перемешать.

Характеристика Оценка Комментарий
Устойчивость Да Внешняя сортировка сохраняет стабильность, если при слиянии равных элементов предпочтение отдается элементу из прогона, который был записан раньше.

Примеры реализации внешней сортировки

Хотите разобрать тему глубже? В нашем бесплатном курсе есть подробные уроки по всем базовым алгоритмам сортировки и структурам данных.