Сортировка слиянием является рекурсивным алгоритмом, а сложность по времени может быть выражена следующим образом:
T (n) = 2T (n / 2) + ɵ (n)
Вышеуказанное повторение может быть решено с использованием метода дерева повторений или метода Master. Это относится к случаю II Master Method и решение повторения rence (n log n).
Временная сложность сортировки слиянием составляет ɵ (nLogn) во всех 3 случаях (наихудший, средний и лучший), поскольку сортировка слиянием всегда делит массив на две половины и занимает линейное время для объединения двух половин.
Он разделяет входной массив на две половины, вызывает себя для двух половинок и затем объединяет две отсортированные половины. Функция merg () используется для объединения двух половинок. Слияние (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, процессы слияния вступают в действие и начинают объединять массивы обратно до тех пор, пока весь массив не станет слиты.