private void mergeRange(int[] nums, int left, int mid, int right, int[] tempArray) { int i = left; int j = mid + 1; int tempIndex = 0; while (i <= mid && j <= right) { if (nums[i] < nums[j]) { tempArray[tempIndex++] = nums[i++]; } else { tempArray[tempIndex++] = nums[j++]; } } while (i <= mid) { tempArray[tempIndex++] = nums[i++]; } while (j <= right) { tempArray[tempIndex++] = nums[j++]; } tempIndex = 0; for (int k = left; k <= right; ++k) { nums[k] = tempArray[tempIndex++]; } } 可以复用tempArray,所以是O(n)空间复杂度