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