Алгоритм сортировки слиянием можно суммировать как:
mergesort (array A) {
mergesort (first half of A);
mergesort (second half of A);
merge the two halves and return;
}
Существует алгоритм O (N) для объединения двух массивов длины N, т.е. его сложность составляет bN для некоторой константы b > 0.
Предполагая, что сложность mergesort
равна T (N). Поскольку половина N равна N / 2, мы видим, что:
mergesort (array A) { T(N) =
mergesort (first half of A); T(N/2) +
mergesort (second half of A); T(N/2) +
merge the two halves and return; bN
}
, что объясняет случай N ≥ 2.
Случай N <2 (базовый случай, когда вы останавливаете рекурсию) тривиален. </p>