public class MergeSort{
public static void main(String[]args){
int []A={1,0,2,4,7,2,1,-1};
MergeSort(A,0,A.length-1);
for(int i=0;i<A.length;i++){
System.out.print(A[i]+" ");
}
}
public static void MergeSort(int []A,int low,int high){
if(low<high){
int mid=(low+high)/2;
MergeSort(A,low,mid);
MergeSort(A,mid+1,high);
merge(A,low,mid,high);
}
}
public static void merge(int []A,int low,int mid,int high){
int []temp=new int [high-low+1];
int h1=low,h2=mid+1,i=0;
while(h1<=mid&&h2<=high){
if(A[h1]<=A[h2]){
temp[i++]=A[h1++];
}else{
temp[i++]=A[h2++];
}
}
while(h1<=mid){
temp[i++]=A[h1++];
}
while(h2<=high){
temp[i++]=A[h2++];
}
int k=0;
while(low<=high){
A[low++]=temp[k++];
}
}
}