下面代码用于归并排序,其中 merge() 函数被调用次数为( )。
void merge(int L[], int R[], int s, int m, int t){
int i = s, j = m + 1, k = s;
while (i <= m && j <= t)
R[k++] = (L[i] < L[j]) ? L[i++] : L[j++];
while (i <= m) R[k++] = L[i++];
while (j <= t) R[k++] = L[j++];
}
int cnt = 0;
void mergeSort(int S[], int T[], int s, int t){
if (s == t) { T[s] = S[s]; return; }
int tmp[20];
int m = (s + t) / 2;
mergeSort(S, tmp, s, m);
mergeSort(S, tmp, m + 1, t);
merge(tmp, T, s, m, t);
cnt++;
}
- A. 0
- B. 1
- C. 6
- D. 7
正确答案:C