void MergeSort2(vector< int >& vArr, int l, int u) { if (l < u) { int m = (l + u) / 2; MergeSort2(vArr, l, m); MergeSort2(vArr, m + 1, u); Merge2(vArr, l, m, u); } }
void MergePass(ElementType S[], ElementType TmpS[], long N, long length) { long i, j; for (i = 0; i <= N - 2 * length; i += 2 * length) { Merge2(S, TmpS, i, i + length, i + 2 * length - 1); } if (i + length < N) { Merge2(S, TmpS, i, i + length, N - 1); } else { for (j = i; j < N; ++j) { TmpS[j] = S[j]; } } }