下面代码用于归并排序,其中 merge() 函数被调用次数为( )。

#include <iostream>using namespace std; void mergeSort(int * listData, int start, int end);void merge(int * listData, int start, int middle, int end); void mergeSort(int * listData, int start, int end) {    if (start >= end)        return;    int middle = (start + end) / 2;    mergeSort(listData, start, middle);    mergeSort(listData, middle + 1, end);    merge(listData, start, middle, end);}void merge(int * listData, int start, int middle, int end) {    int leftSize = middle - start + 1;    int rightSize = end - middle;     int * left = new int[leftSize];    int * right = new int[rightSize];    for (int i = 0; i < leftSize; i++)        left[i] = listData[start + i];    for (int j = 0; j < rightSize; j++)        right[j] = listData[middle + 1 + j];     int i = 0, j = 0, k = start;    while (i < leftSize && j < rightSize) {        if (left[i] <= right[j]) {            listData[k] = left[i];            i++;        } else {            listData[k] = right[j];            j++;        }        k++;    }     while (i < leftSize) {        listData[k] = left[i];        i++;        k++;    }    while (j < rightSize) {        listData[k] = right[j];        j++;        k++;    }    delete[] left;    delete[] right;}int main() {    int lstA[] = {1, 3, 2, 7, 11, 6, 3};    int size = sizeof(lstA) / sizeof(lstA[0]);     mergeSort(lstA, 0, size - 1); // 对lstA执行归并排序     for (int i = 0; i < size; i++)        cout << lstA[i] << " ";    cout << endl;    return 0;}
填写答案