Как выполнить сортировку массивов с эффективным использованием памяти в Java? - PullRequest
7 голосов
/ 13 мая 2011

Я хочу отсортировать большой массив строк (в частности, File.list(), который я не могу экстернализировать или уменьшить) без использования [много] дополнительной памяти.

Arrays.sort() говорит, что выполняет сортировку слиянием, а википедия говорит, что некоторые реализации выделяют размер исходного массива для хранения отсортированного вывода. (Кажется, это подтверждается ссылкой System.arraycopy в методе).

Есть ли алгоритм сортировки на месте, который я могу использовать вместо этого, который эффективен для памяти?

Ответы [ 3 ]

6 голосов
/ 13 мая 2011
Быстрая сортировка

на месте и очень быстрая. Смотрите здесь .

5 голосов
/ 13 мая 2011

String является неизменным в Java. Таким образом, когда массив из String в вашем вопросе дублируется, они не требуют столько места, сколько вы ожидаете. На самом деле, накладные расходы могут быть весьма минимальными.

Другими словами, Java Arrays#sort() может быть просто идеальным для вашего решения. Вы можете проверить производительность самостоятельно.

Для вашего названия вопроса, ответ Ankit и ответ dlev вполне подойдут.

1 голос
/ 13 мая 2011

Вы можете написать алгоритм сортировки кучи для сортировки на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...