归并排序
首先简单复习一下归并排序
class Solution {
public void divide(int[] nums,int l,int r){
if(l < r){
int mid = (r + l) / 2;
divide(nums,l,mid);
divide(nums,mid + 1,r);
merge(nums,l,mid,r);
}
}
public void merge(int[] nums,int l,int mid,int r){
int[] temp = new int[r - l + 1];
int k = 0;
int i = l;
int j = mid + 1;
while(i <= mid && j <= r){
if(nums[i] < nums[j])temp[k++] = nums[i++];
else temp[k++] = nums[j++];
}
while(i <= mid)temp[k++] = nums[i++];
while(j <= r)temp[k++] = nums[j++];
for(int n = 0;n < k;n++)nums[l + n] = temp[n];
}
public int[] sortArray(int[] nums) {
divide(nums,0,nums.length - 1);
return nums;
}
}
浙公网安备 33010602011771号