| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 
 | class Solution {public static List<Integer> sortArray(int[] nums) {
 int[] temp = new int[nums.length];
 
 sort(nums, 0, nums.length-1, temp);
 
 List<Integer> list = new ArrayList<>();
 for (int i = 0; i < nums.length; i++) {
 list.add(nums[i]);
 }
 
 return list;
 }
 
 public static void sort(int[] nums, int left, int right, int[] temp){
 if (left < right){
 int mid = (left+right) / 2;
 
 sort(nums, left, mid, temp);
 sort(nums, mid+1, right, temp);
 
 merge(nums, left, right, mid, temp);
 }
 }
 
 public static void merge(int[] nums, int left, int right, int mid, int[] temp){
 int i = left;
 int j = mid+1;
 int index = 0;
 
 while(i <= mid && j <= right){
 if(nums[i] > nums[j]){
 temp[index++] = nums[j++];
 }else {
 temp[index++] = nums[i++];
 }
 }
 
 while(i <= mid){
 temp[index++] = nums[i++];
 }
 
 while (j <= right){
 temp[index++] = nums[j++];
 }
 
 index = 0;
 while (left <= right){
 nums[left++] = temp[index++];
 }
 }
 }
 
 |