class Solution {
public int[] mergeSort(int[] arr){
if(arr.length<2||arr == null)
return arr;
return MSort(arr,0,arr.length-1);
}
public int[] MSort(int[] arr, int low, int high){
if(low < high){
int mid = (low+high)/2;
int[] left = MSort(arr,low,mid);
int[] right = MSort(arr,mid+1,high);
return mergeTwoList(left,right);
}
return new int[]{arr[low]};
}
public int[] mergeTwoList(int[] A, int[] B) {
int[] C = new int[A.length + B.length];
int k = 0;
int i = 0;
int j = 0;
while(i < A.length && j < B.length) {
if (A[i] < B[j])
C[k++] = A[i++];
else
C[k++] = B[j++];
}
while (i < A.length)
C[k++] = A[i++];
while (j < B.length)
C[k++] = B[j++];
return C;
}
}