Xaositect спасибо!
Помогите ещё разобрать на примере. Без решения - просто оценка сложности, надеюсь сам воспроизведу решение. Набросал некоторое подобие сортировки слиянием с использованием данной рекурсии.
Код:
function merge(A,B) // Функция слияния двух массивов.
{ // A и B - упорядоченные массивы.
var N = A.length, M = B.length, C = [];
for (var i=0, j=0, k=0; k<N+M; k++)
{ if (i==N){ C[k] = B[j++]; continue; }
if (j==M){ C[k] = A[i++]; continue; }
C[k] = (A[i]<B[j]) ? A[i++] : B[j++];
}
// На выходе упорядоченный массив,
return C; // состоящий из элементов A и B.
}
// Почти очевидно, что функция работает за O(N+M).
function MergeSort(k,A) // Некоторое подобие сортировки слиянием ))
{ // Чисто для образовательных целей.
var n = A.length;
if (n<2) return A;
if (k == n-2) return merge( [A[n-2]], [A[n-1]] );
else return merge( [A[k]], MergeSort(k+1,A) );
}
// За сколько работает функция MergeSort ?