问题
给你一个整数数组 nums,请你将该数组升序排列。
示例 1:
输入:nums = [5,2,3,1]
输出:[1,2,3,5]
示例 2:
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
提示:
1 <= nums.length <= 50000
-50000 <= nums[i] <= 50000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-an-array
merge sort
class Solution {
public int[] sortArray(int[] nums) {
return mergeSort(nums,0,nums.length-1);
}
public int[] mergeSort(int[] nums, int l, int r){
if(r == l){
return new int[]{nums[l]};
}
int mid = (l+r)/2;
return merge(mergeSort(nums,l,mid),mergeSort(nums,mid+1,r));
}
public int[] merge(int[] l, int[] r){
int pl = 0;
int pr = 0;
int[] tmp = new int[l.length+r.length];
for(int i = 0; i< tmp.length; i++){
if(pl == l.length){
tmp[i] = r[pr++];
continue;
}
if(pr == r.length){
tmp[i] = l[pl++];
continue;
}
if(l[pl]<r[pr]){
tmp[i] = l[pl++];
}else{
tmp[i] = r[pr++];
}
}
return tmp;
}
}