1 2 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++]; } } }
|