归并排序算法实现Java
import java.util.Arrays;
public class Solution {
public static int[] mergeSort(int[] nums) {
sort(nums,0,nums.length-1);
return nums;
}
public static void sort(int[] nums,int l,int r) {
if(l==r) return;
int mid=l+(r-l)/2;
sort(nums,l,mid);
sort(nums,mid+1,r);
merge(nums,l,mid,r);
}
public static void merge(int nums[],int l,int mid,int r) {
int[] tmp=new int[r-l+1];
int i=l;
int j=mid+1;
int k=0;
while(i<=mid&&j<=r) {
if(nums[i]<=nums[j]) {
tmp[k++]=nums[i];
i++;
}
else {
tmp[k++]=nums[j];
j++;
}
}
while(i<=mid) tmp[k++]=nums[i++];
while(j<=r) tmp[k++]=nums[j++];
for(int m=0;m<k;m++) {
nums[m+l]=tmp[m];
}
}
public static void main(String[] args){
int[] nums = {1,4,5,7,9,3,10,6,2,8};
System.out.println(Arrays.toString(mergeSort(nums)));
}
}