我理解mergesort的时间复杂度是O(nLogn),但是我无法通过其Top Down变体得出这个结论。
TopDownMerge(A[], iBegin, iMiddle, iEnd, B[])
{
i0 = iBegin, i1 = iMiddle;
// While there are elements in the left or right runs
for (j = iBegin; j < iEnd; j++) {
// If left run head exists and is <= existing right run head.
if (i0 < iMiddle && (i1 >= iEnd || A[i0] <= A[i1]))
B[j] = A[i0];
i0 = i0 + 1;
else
B[j] = A[i1];
i1 = i1 + 1;
}
}
我从维基百科页面得到了这个,并且“if”声明让我失望,而它的条件让我疯狂。任何帮助表示赞赏。