Сортировка занимает O (n log n) в последовательном случае. Если у нас будет O (n) процессоров, мы будем надеяться на линейное ускорение. O (log n) параллельных алгоритмов существуют, но они имеют очень высокую константу. Они также не применимы к обычному оборудованию, у которого нет даже около O (n) процессоров. С процессорами p разумные алгоритмы должны занимать время O (n / p log n).
В последовательном случае быстрая сортировка в среднем имеет лучшую сложность выполнения. Параллельный алгоритм быстрой сортировки легко реализовать (см. Здесь и здесь ). Однако это не очень хорошо работает, поскольку самый первый шаг - разделить всю коллекцию на одном ядре. Я нашел информацию о многих алгоритмах параллельной сортировки, но до сих пор не видел ничего, указывающего на явного победителя.
Я хочу отсортировать списки от 1 миллиона до 100 миллионов элементов на языке JVM, работающем на 8-32 ядрах.