Сортировка 10 ГБ данных в 1 ГБ памяти. Как мне это сделать?

16
задан WinW 7 August 2011 в 16:15
поделиться

1 ответ

Для сортировки 10 ГБ данных с помощью только 1 ГБ RAM:

  1. Read 1 ГБ данных в оперативной памяти и виде при помощи quicksort.
  2. Запись отсортированные данные к диску.
  3. Повторные шаги 1 и 2 до всех данных находятся в отсортированных блоках на 1 ГБ (существует 10 ГБ / 1 ГБ = 10 блоков), который теперь должен быть объединен в один единственный выходной файл.
  4. Read первые 90 МБ каждого отсортированного блока (1 ГБ) во входные буферы в оперативной памяти и выделяют остающихся 100 МБ для буфера вывода. (Для лучшей производительности мы можем взять больше буфер вывода и немного меньшие входные буферы.)
  5. Выполняют слияние с 10 путями и хранят результат в буфере вывода.
  6. Каждый раз, когда буфер вывода заполняется, запишите, что он к финалу отсортировал файл, и освободите его. Каждый раз, когда любой из пустых входных буферов на 90 МБ, заполнитесь, это со следующими 90 МБ его связанного 1 ГБ отсортировало блок, пока больше данных из блока не доступно.

Это - внешний подход сортировки слиянием, который работает внешне.

0
ответ дан 30 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: