给你一个整数数组 nums
,请你将该数组升序排列。
输入:nums = [5,2,3,1]
输出:[1,2,3,5]
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
实现思路直接看我录制的视频吧算法-归并排序_哔哩哔哩_bilibili
class Solution {
public int[] sortArray(int[] nums) {
mergeSort(nums, 0, nums.length - 1);
return nums;
}
private void mergeSort(int[] nums, int low, int height) {
int mid = (low + height) / 2;
if (low < height) {
mergeSort(nums, low, mid);
mergeSort(nums, mid + 1, height);
merge(nums, low, mid, height);
}
}
private void merge(int[] nums, int low, int mid, int height) {
int[] temp = new int[height - low + 1];
int i = low;
int j = mid + 1;
int index = 0;
while (i <= mid && j <= height) {
temp[index++] = nums[i] < nums[j] ? nums[i++] : nums[j++];
}
while (i <= mid) {
temp[index++] = nums[i++];
}
while (j <= height) {
temp[index++] = nums[j++];
}
for (int k =0 ; k < temp.length; k++) {
nums[low + k] = temp[k];
}
}
}