Given an array of integers nums, return a new array containing the same elements sorted in ascending order. Implement the sorting algorithm yourself using a divide-and-conquer approach rather than relying on Python's built-in sort.
Example 1:
Input: nums = [5, 2, 3, 1]
Output: [1, 2, 3, 5]
Explanation: Sorting the elements in ascending order gives [1, 2, 3, 5].
Example 2:
Input: nums = [5, 1, 1, 2, 0, 0]
Output: [0, 0, 1, 1, 2, 5]
Explanation: Duplicate values must be preserved in sorted order.
1 <= len(nums) <= 10^5-10^9 <= nums[i] <= 10^9