Merge Sort adalah algoritma rekursif dan kompleksitas waktu dapat diekspresikan sebagai relasi perulangan berikut.
T (n) = 2T (n / 2) + ɵ (n)
Perulangan di atas dapat dipecahkan dengan menggunakan metode Pohon Perulangan atau metode Master. Itu jatuh dalam kasus II Metode Master dan solusi dari perulangan adalah ɵ (n log n).
Kompleksitas waktu Urutkan Gabung adalah ɵ (nLogn) dalam semua 3 kasus (terburuk, rata-rata dan terbaik) karena jenis gabungan selalu membagi array menjadi dua bagian dan mengambil waktu linear untuk menggabungkan dua bagian.
Ini membagi array input dalam dua bagian, memanggil dirinya untuk dua bagian dan kemudian menggabungkan dua bagian yang diurutkan. Fungsi merg () digunakan untuk menggabungkan dua bagian. Penggabungan (arr, l, m, r) adalah proses utama yang mengasumsikan bahwa arr [l..m] dan arr [m + 1..r] diurutkan dan menggabungkan dua sub-array yang diurutkan menjadi satu. Lihat implementasi C berikut untuk detailnya.
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)
Jika kita melihat lebih dekat pada diagram, kita dapat melihat bahwa array secara rekursif dibagi menjadi dua bagian sampai ukuran menjadi 1. Setelah ukuran menjadi 1, proses penggabungan mulai bekerja dan mulai menggabungkan array kembali hingga array lengkap menjadi bergabung.