public class MergeSort
{
public static void main(String [] args)
{
int []arr={2,4,1,5,6};
mergeSort(arr,0,4);
}
public static void Merge(int []arr,int p,int q,int r){
int n1=q-p+1;
int n2=r-q;
int []L=new int[n1];
int []R=new int[n2];
for(int i=0;i<n1;i++) { L[i]=arr[i];
}
for(int i=0;i<n2;i++)
{
R[i]=arr[q+1+i];
}
int m=0,n=0;
for(int k=0;k<=r;k++)
{
if(L[m]<R[n]) arr[k]=L[m++];
else arr[k]=R[n++];
}
}
public static void mergeSort(int []arr,int p,int r)
{
if(p<r)
{
int q=(r+p)/2;
mergeSort(arr,p,q);
mergeSort(arr,q+1,r);
Merge(arr,p,q,r);
}
}
}
{
public static void main(String [] args)
{
int []arr={2,4,1,5,6};
mergeSort(arr,0,4);
}
public static void Merge(int []arr,int p,int q,int r){
int n1=q-p+1;
int n2=r-q;
int []L=new int[n1];
int []R=new int[n2];
for(int i=0;i<n1;i++) { L[i]=arr[i];
}
for(int i=0;i<n2;i++)
{
R[i]=arr[q+1+i];
}
int m=0,n=0;
for(int k=0;k<=r;k++)
{
if(L[m]<R[n]) arr[k]=L[m++];
else arr[k]=R[n++];
}
}
public static void mergeSort(int []arr,int p,int r)
{
if(p<r)
{
int q=(r+p)/2;
mergeSort(arr,p,q);
mergeSort(arr,q+1,r);
Merge(arr,p,q,r);
}
}
}









