Leetcode 912. Sort an Array
题目链接: Sort an Array
难度:Medium
题目大意:
对数组进行排序。
思路:
用分治法对数组进行归并排序,将数组分成两部分,分别排好序后再进行合并。
代码
class Solution {
public int[] sortArray(int[] nums) {
mergeSort(nums);
return nums;
}
public void mergeSort(int[] nums){
if(nums.length==1){
return;
}
int n=nums.length;
int mid=n/2;
int[] arr1=new int[mid];
int[] arr2=new int[n-mid];
arr1=Arrays.copyOfRange(nums,0,mid);
arr2=Arrays.copyOfRange(nums,mid,n);
mergeSort(arr1);
mergeSort(arr2);
int l=0,r=0;
int i=0;
while(i<n){
if(l==mid){
nums[i]=arr2[r];
i++;
r++;
}
else if(r==n-mid){
nums[i]=arr1[l];
i++;
l++;
}
else if(arr1[l]<=arr2[r]){
nums[i]=arr1[l];
i++;
l++;
}
else{
nums[i]=arr2[r];
i++;
r++;
}
}
}
}