Ответ, который может понадобиться интервьюеру, может быть, как вам удается эффективно отсортировать набор данных, который превышает системную память. Следующий раздел взят из Википедии :
Шаблоны использования памяти и индекс
сортировка
Когда размер массива будет
отсортированные подходы или превышают
доступной первичной памяти, так что
(намного медленнее) место на диске или в разделе подкачки должно
быть занятым, модель использования памяти
алгоритм сортировки становится
важно, и алгоритм, который может
были довольно эффективными, когда
массив легко помещается в оперативной памяти может стать
непрактично. В этом сценарии
общее количество сравнений становится
(относительно) менее важно, и
количество раз разделов памяти
должны быть скопированы или заменены
диск может доминировать в производительности
характеристики алгоритма. Таким образом,
количество проходов и
локализация сравнений может быть
важнее, чем сырое число
сравнения, так как сравнения
соседние элементы друг с другом случаются
на скорости системной шины (или, с кешированием,
даже на скорости процессора), что по сравнению с
скорость диска, практически
мгновенно.
Например, популярный рекурсивный
алгоритм быстрой сортировки обеспечивает довольно
разумная производительность с адекватным
RAM, но из-за рекурсивного способа, которым
он копирует части массива
становится гораздо менее практичным, когда
массив не помещается в оперативной памяти, потому что это
может вызвать ряд медленного копирования или
перемещать операции на и с диска. В
этот сценарий, другой алгоритм может
быть предпочтительным, даже если это требует больше
Всего сравнений.
Один из способов обойти эту проблему,
который хорошо работает, когда сложные записи
(например, в реляционной базе данных)
сортируется по небольшому ключу
поле, чтобы создать индекс в
массив, а затем отсортировать индекс, а
чем весь массив. (Сортированный
версия всего массива может затем
быть произведенным с одним проходом, читая
из индекса, но часто даже это
ненужный, так как отсортированный
Индекс адекватен.) Потому что индекс
намного меньше, чем весь массив,
это может легко поместиться в памяти, где
весь массив не будет, эффективно
устранение проблемы замены диска.
Эта процедура иногда называется
"сортировка по тегам". [5]
Еще одна техника для преодоления
проблема размера памяти состоит в том, чтобы объединить два
алгоритмы таким образом, что принимает
Преимущества силы каждого в
улучшить общую производительность. За
Например, массив может быть
подразделяется на куски размером, который
легко поместится в ОЗУ (скажем, несколько
тысячи элементов), куски отсортированы
используя эффективный алгоритм (такой как
быстрой сортировки)
результаты объединены в соответствии с сортировкой. это
менее эффективно, чем просто делать
слияния в первую очередь, но это
требует меньше физической оперативной памяти (чтобы быть
практичнее) чем полная быстрая сортировка на
весь массив.
Методы также могут быть объединены. За
сортировка очень больших наборов данных, которые
значительно превышает системную память, даже
Индекс может быть необходимо отсортировать с помощью
алгоритм или комбинация алгоритмов
предназначен для разумной работы с
виртуальной памяти, то есть, чтобы уменьшить
сумма обмена требуется.