ในขณะที่คุณไม่ได้กล่าวถึงข้อ จำกัด ของฮาร์ดแวร์และเมื่อคุณกำลังมองหา "เร็วที่สุด" ฉันจะบอกว่าคุณควรเลือกอัลกอริทึมการเรียงลำดับแบบขนานตามฮาร์ดแวร์ที่มีอยู่และชนิดของอินพุตที่คุณมี
ในทางทฤษฎีเช่นเป็นquick_sort
O(n log n)
ด้วยp
โปรเซสเซอร์สิ่งนี้น่าจะเกิดขึ้นได้O(n/p log n)
หากเราใช้งานแบบขนาน
เพื่ออ้างถึง Wikipedia: ความซับซ้อนของเวลาของ ...
การเรียงลำดับแบบขนานที่เหมาะสมที่สุดคือ O (log n)
ในทางปฏิบัติสำหรับขนาดอินพุตขนาดใหญ่มันเป็นไปไม่ได้ที่จะประสบความสำเร็จO(log n)
เนื่องจากปัญหาการขยายขนาด
นี่คือรหัสเทียมสำหรับการจัดเรียงผสานขนาน การใช้งานของmerge()
สามารถเหมือนกับในการผสานการเรียงปกติ:
// Sort elements lo through hi (exclusive) of array A.
algorithm mergesort(A, lo, hi) is
if lo+1 < hi then // Two or more elements.
mid = ⌊(lo + hi) / 2⌋
fork mergesort(A, lo, mid)
mergesort(A, mid, hi)
join
merge(A, lo, mid, hi)
ดูเพิ่มเติมที่: