import java.util.*;
public class MergeSort {
public int[] mergeSort(int[] A, int n) {
mergesort(A,0,n-1);
return A;
}
public 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 void merge(int[] A,int low,int mid,int high)
{
int [] tmp =new int[A.length];
int m=low;
int n=mid+1;
int k=low;
while(m<=mid&&n<=high)
{
if(A[m]<A[n])
{
tmp[k++]=A[m++];
}
else
{
tmp[k++]=A[n++];
}
}
while(m<=mid)
{
tmp[k++]=A[m++];
}
while(n<=high)
{
tmp[k++]=A[n++];
}
while(low<=high)
{
A[low]=tmp[low++];
}
}
}