Sort an Array

Given an array of integers nums, sort the array in ascending order.

 

Example 1:

Input: nums = [5,2,3,1]
Output: [1,2,3,5]

Example 2:

Input: nums = [5,1,1,2,0,0]
Output: [0,0,1,1,2,5]

 

Constraints:


Solution:

class Solution {
    public int[] sortArray(int[] nums) {
        return sort(nums);
    }
    
    private int[] sort(int[] nums) {
        // System.out.println(Arrays.toString(nums));
        if (nums.length <= 1) return nums;
        int mid = nums.length / 2;
        int[] l = sort(Arrays.copyOfRange(nums, 0, mid));
        int[] r = sort(Arrays.copyOfRange(nums, mid, nums.length));
        return merge(l, r);
    }
    
    private int[] merge(int[] one, int[] two) {
        int m = one.length, n = two.length;
        int[] res = new int[m + n];
        int l = 0, r = 0, i = 0;
        while (l < m && r < n) {
            if (one[l] < two[r]) {
                res[i++] = one[l++];
            } else {
                res[i++] = two[r++];
            }
        }
        if (l < m) {
            while (i < res.length) {
                res[i++] = one[l++];
            }
        }
        if (r < n) {
            while (i < res.length) {
                res[i++] = two[r++];
            }
        }
        return res;
    }
}