Merge sort - Java
```\n    public int[] sortArray(int[] nums) {\n     mergesort(nums, 0, nums.length-1);\n     return nums;\n    }\n\t\n    public void mergesort(int[] nums, int 
```\n    public int[] sortArray(int[] nums) {\n     mergesort(nums, 0, nums.length-1);\n     return nums;\n    }\n\t\n    public void mergesort(int[] nums, int start, int end){\n        if(start < end){\n            int mid = (start + end) / 2;\n            mergesort(nums, start, mid);\n            mergesort(nums, mid+1, end);\n            merge(nums, start, mid, end);\n        }\n    }\n    \n    public void merge(int[] nums, int start, int mid, int end){\n    int i= start,  j= mid+1, k=0;\n    int[] temp = new int[end-start+1];\n    while( i <= mid && j<= end)\n    {\n        if (nums[i] < nums[j])\n            temp[k++] = nums[i++];\n        else\n            temp[k++] = nums[j++];\n    }\n    while (i <= mid) { temp[k++] = nums[i++]; } //copy remaining elements\n    while (j <= end) { temp[k++] = nums[j++]; } //copy remaining elements\n    for (int pointer = start; pointer <= end; pointer++){\n        nums[pointer] = temp[pointer-start];\n    }\n  }
['Merge Sort', 'Java']