Merge Sort ist ein rekursiver Algorithmus und die Zeitkomplexität kann wie folgt ausgedrückt werden:
T (n) = 2T (n / 2) + ɵ (n)
Die obige Wiederholung kann entweder mit der Recurrence Tree-Methode oder der Master-Methode gelöst werden. Es fällt in den Fall II der Master-Methode und die Lösung der Wiederholung ist ɵ (n log n).
Die zeitliche Komplexität der Zusammenführungssortierung beträgt in allen drei Fällen (schlechteste, durchschnittliche und beste) ɵ (nLogn), da die Zusammenführungssortierung das Array immer in zwei Hälften teilt und für die Zusammenführung von zwei Hälften lineare Zeit benötigt.
Es teilt das Eingabearray in zwei Hälften, ruft sich selbst für die beiden Hälften auf und führt dann die beiden sortierten Hälften zusammen. Mit der Funktion merg () werden zwei Hälften zusammengeführt. Das Zusammenführen (arr, l, m, r) ist ein Schlüsselprozess, der davon ausgeht, dass arr [l..m] und arr [m + 1..r] sortiert sind, und die beiden sortierten Unterarrays zu einem zusammenführt. Weitere Informationen finden Sie in der folgenden C-Implementierung.
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)
Wenn wir uns das Diagramm genauer ansehen, können wir sehen, dass das Array rekursiv in zwei Hälften geteilt wird, bis die Größe 1 wird. Sobald die Größe 1 wird, wird der Zusammenführungsprozess aktiviert und das Zusammenführen der Arrays beginnt, bis das gesamte Array wieder vorhanden ist zusammengeführt.