Hợp nhất Sắp xếp là một thuật toán đệ quy và độ phức tạp thời gian có thể được biểu thị như sau mối quan hệ lặp lại.
T (n) = 2T (n / 2) + (n)
Sự lặp lại ở trên có thể được giải quyết bằng phương pháp Cây lặp lại hoặc phương pháp Master. Nó nằm trong trường hợp II của Phương pháp chủ và giải pháp tái phát là (n log n).
Độ phức tạp thời gian của Sắp xếp hợp nhất là (nLogn) trong cả 3 trường hợp (tệ nhất, trung bình và tốt nhất) vì sắp xếp hợp nhất luôn chia mảng thành hai nửa và mất thời gian tuyến tính để hợp nhất hai nửa.
Nó chia mảng đầu vào thành hai nửa, gọi chính nó cho hai nửa và sau đó hợp nhất hai nửa được sắp xếp. Hàm merg () được sử dụng để hợp nhất hai nửa. Hợp nhất (mảng, l, m, r) là quá trình chính giả định rằng mảng [l..m] và mảng [m + 1..r] được sắp xếp và hợp nhất hai mảng con được sắp xếp thành một. Xem sau thực hiện C để biết chi tiết.
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)
Nếu chúng ta nhìn kỹ hơn vào sơ đồ, chúng ta có thể thấy rằng mảng được chia theo cách đệ quy thành hai nửa cho đến khi kích thước trở thành 1. Khi kích thước trở thành 1, các quy trình hợp nhất sẽ hoạt động và bắt đầu hợp nhất các mảng trở lại cho đến khi mảng hoàn chỉnh sáp nhập.