Merge Sort
package smlprograms;
public class MergeSort {
public static void main(String args[])
{
int arr[] = {10,9,5,7,3,1,8};
System.out.println("Given Array");
printArray(arr);
MergeSort obj = new MergeSort();
obj.sort(arr, 0, arr.length -1);
System.out.print("\nSorted Array ");
printArray(arr);
}
static void printArray(int arr[])
{
int l, i;
l = arr.length;
for(i=0;i<l;i++)
{
System.out.print(arr[i]);
}
}
void sort(int arr[], int l, int r)
{
if(l<r)
{
int m = (l+r)/2;
sort(arr, l, m);
sort(arr, m+1, r);
merge(arr, l, m , r);
}
}
void merge(int arr[], int l, int m, int r)
{
int n1 = m -l +1;
int n2 = r-m;
int L[] = new int[n1];
int R[] = new int[n2];
for(int i=0;i<n1;i++)
{
L[i] = arr[l+i];
}
for(int j=0;j<n2;j++)
{
R[j] = arr[m+1+j];
}
int i=0, j=0;
int k=1;
while (i< n1 && j< n2)
{
if(L[i]<= R[j])
{
arr[k] = L[i];
i++;
}
else
{
arr[k] = R[j];
j++;
}
k++;
}
while(j<n2)
{
arr[k] = R[j];
j++;
k++;
}
}
}
public class MergeSort {
public static void main(String args[])
{
int arr[] = {10,9,5,7,3,1,8};
System.out.println("Given Array");
printArray(arr);
MergeSort obj = new MergeSort();
obj.sort(arr, 0, arr.length -1);
System.out.print("\nSorted Array ");
printArray(arr);
}
static void printArray(int arr[])
{
int l, i;
l = arr.length;
for(i=0;i<l;i++)
{
System.out.print(arr[i]);
}
}
void sort(int arr[], int l, int r)
{
if(l<r)
{
int m = (l+r)/2;
sort(arr, l, m);
sort(arr, m+1, r);
merge(arr, l, m , r);
}
}
void merge(int arr[], int l, int m, int r)
{
int n1 = m -l +1;
int n2 = r-m;
int L[] = new int[n1];
int R[] = new int[n2];
for(int i=0;i<n1;i++)
{
L[i] = arr[l+i];
}
for(int j=0;j<n2;j++)
{
R[j] = arr[m+1+j];
}
int i=0, j=0;
int k=1;
while (i< n1 && j< n2)
{
if(L[i]<= R[j])
{
arr[k] = L[i];
i++;
}
else
{
arr[k] = R[j];
j++;
}
k++;
}
while(j<n2)
{
arr[k] = R[j];
j++;
k++;
}
}
}
Comments
Post a Comment