归并排序模板
public static void merger(int[] nums,int left,int right,int mid) {
int[] tmp=new int[right-left+1];
int i=left;
int j=mid+1;
int tmpi=0;
while(i<=mid&&j<=right) {
if(nums[i]<=nums[j]) {
tmp[tmpi++]=nums[i++];
}else {
tmp[tmpi++]=nums[j++];
}
}
while(i<=mid) {
tmp[tmpi++]=nums[i++];
}
while(j<=right) {
tmp[tmpi++]=nums[j++];
}
for(int k=0;k<right-left+1;k++) {
nums[left+k]=tmp[k];
}
}
public static void mergerSort(int[] nums,int left,int right) {
if(left>=right) return;
int mid=(left+right)>>>1;
mergerSort(nums, left, mid);
mergerSort(nums, mid+1, right);
merger(nums, left, right, mid);
}