Das Sortieren dauert im seriellen Fall O (n log n). Wenn wir O (n) -Prozessoren haben, würden wir auf eine lineare Beschleunigung hoffen. O (log n) parallele Algorithmen existieren, aber sie haben eine sehr hohe Konstante. Sie sind auch nicht auf Standardhardware anwendbar, die nicht in der Nähe von O (n) -Prozessoren verfügt. Bei p-Prozessoren sollten vernünftige Algorithmen O (n / p log n) Zeit benötigen.
Im seriellen Fall weist die schnelle Sortierung im Durchschnitt die beste Laufzeitkomplexität auf. Ein paralleler Schnellsortieralgorithmus ist einfach zu implementieren (siehe hier und hier ). Es funktioniert jedoch nicht gut, da der allererste Schritt darin besteht, die gesamte Sammlung auf einem einzigen Kern zu partitionieren. Ich habe Informationen zu vielen parallelen Sortieralgorithmen gefunden, aber bisher habe ich nichts gesehen, was auf einen klaren Gewinner hindeutet.
Ich möchte Listen mit 1 bis 100 Millionen Elementen in einer JVM-Sprache sortieren, die auf 8 bis 32 Kernen ausgeführt wird.