A classificação de mesclagem é um algoritmo recursivo e a complexidade do tempo pode ser expressa como a seguinte relação de recorrência.
T (n) = 2T (n / 2) + ɵ (n)
A recorrência acima pode ser resolvida usando o método Recurrence Tree ou Master. Está no caso II do método mestre e a solução da recorrência é ɵ (n log n).
A complexidade de tempo da Merge Sort é ɵ (nLogn) nos 3 casos (pior, médio e melhor), pois a classificação de mesclagem sempre divide o array em duas metades e leva um tempo linear para mesclar duas metades.
Ele divide a matriz de entrada em duas metades, chama-se pelas duas metades e depois mescla as duas metades classificadas. A função merg () é usada para mesclar duas metades. A mesclagem (arr, l, m, r) é um processo-chave que pressupõe que arr [l..m] e arr [m + 1..r] são classificados e mescla os dois sub-vetores classificados em um. Consulte a seguinte implementação em C para obter detalhes.
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)
Se olharmos mais de perto o diagrama, podemos ver que a matriz é recursivamente dividida em duas metades até o tamanho se tornar 1. Quando o tamanho se torna 1, os processos de mesclagem entram em ação e começam a mesclar as matrizes até a matriz completa ser concluída. mesclado.