下面代码用于归并排序,其中 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;}