For the following code segment, the time complexity is ________
int func(int arr[], int n)
{
if (n <= 1)
{
return 0;
}
int m = (int) sqrt(n);
int left[m], right[m];
for (int i = 0; i < m; i++) {
left[i] = arr[i];
right[i] = arr[m + i];
}
int inversions = func(left, m) + func(right, m);
int i = 0, j = 0, k = 0;
while (i < m && j < m) {
if (left[i] <= right[j]) {
arr[k++] = left[i++];
} else {
arr[k++] = right[j++];
inversions += m - i;
}
}
while (i < m) {
arr[k++] = left[i++];
}
while (j < m) {
arr[k++] = right[j++];
}
return inversions;
}