public void mergesort(int[] tmp,int left,int right,int[] arr){
int mid=(left+right)/2;
mergesort(tmp,left,mid,arr);
mergesort(tmp,mid+1,right,arr);
merge(tmp,left,mid,right,arr);
}
public void merge(int[] tmp,int left,int mid,int right,int[] arr){
int i=left;
int j=mid+1;
int t=0;
while (left<=mid&&j<=right){
if(arr[i]<arr[j]){
tmp[t++]=arr[i++];
}else {
tmp[t++]=arr[j++];
}
}
while (i<=mid){
tmp[t++]=arr[i++];
}
while (j<=right){
tmp[t++]=arr[j++];
}
t=0;
while (left<=right){
arr[left++]=tmp[t++];
}
}