Merge Sort เป็นอัลกอริทึมแบบเรียกซ้ำและความซับซ้อนของเวลาสามารถแสดงได้ดังนี้
T (n) = 2T (n / 2) + ɵ (n)
การเกิดซ้ำข้างต้นสามารถแก้ไขได้โดยใช้วิธีการทำซ้ำต้นไม้หรือวิธีการต้นแบบ มันตกอยู่ในกรณีที่ II ของวิธีการหลักและวิธีแก้ปัญหาของการเกิดซ้ำคือɵ (n log n)
ความซับซ้อนของเวลาในการรวมการเรียงลำดับคือɵ (nLogn) ในทั้ง 3 กรณี (แย่ที่สุด, ปานกลางและดีที่สุด) เนื่องจากการเรียงลำดับการผสานจะแบ่งอาร์เรย์ในสองส่วนเสมอและใช้เวลาเชิงเส้นเพื่อผสานสองครึ่ง
มันแบ่งอาร์เรย์อินพุตในสองส่วนเรียกตัวเองว่าสำหรับทั้งสองส่วนแล้วรวมทั้งสองแบ่งครึ่ง ฟังก์ชันการรวม () ใช้สำหรับการรวมสองครึ่ง การผสาน (arr, l, m, r) เป็นกระบวนการหลักที่สมมติว่า arr [l..m] และ arr [m + 1.r] ได้รับการจัดเรียงและผสานทั้งสองอาร์เรย์ย่อยที่เรียงลำดับไว้เข้าด้วยกัน ดูการติดตั้ง C ต่อไปนี้สำหรับรายละเอียด
MergeSort(arr[], l, r)
If r > l
1. Find the middle point to divide the array into two halves:
middle m = (l+r)/2
2. Call mergeSort for first half:
Call mergeSort(arr, l, m)
3. Call mergeSort for second half:
Call mergeSort(arr, m+1, r)
4. Merge the two halves sorted in step 2 and 3:
Call merge(arr, l, m, r)
ถ้าเราดูแผนภาพอย่างใกล้ชิดเราจะเห็นว่าอาร์เรย์นั้นแบ่งซ้ำสองส่วนจนขนาดกลายเป็น 1 เมื่อขนาดกลายเป็น 1 กระบวนการผสานจะเริ่มต้นขึ้นและเริ่มรวมอาร์เรย์กลับเข้าไปจนอาร์เรย์สมบูรณ์ รวม