public class MergeSortTest {
public static void main(String[] args) {
int arr[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
process(arr,0,arr.length-1);
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void process(int[] arr,int L,int R){
if(L>=R)
return;
int mid=L+((R-L)>>1);
process(arr,L,mid);
process(arr,mid+1,R);
mergeSort(arr,L,mid,R);
}
private static void mergeSort(int[] arr,int L,int mid,int R) {
int help[]=new int[R-L+1];
int i=0;
int p1=L;
int p2=mid+1;
while(p1<=mid&&p2<=R){
help[i++]=arr[p1]<=arr[p2]?arr[p1++]:arr[p2++];
}
while(p1<=mid){
help[i++]=arr[p1++];
}
while(p2<=R){
help[i++]=arr[p2++];
}
for(i=0;i<help.length;i++){
arr[L+i]=help[i];
}
}
}