Skip to content

Instantly share code, notes, and snippets.

@vik-y
Forked from jayeshsolanki93/MergeSort.java
Last active August 21, 2016 18:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vik-y/31758420569473fd4d45b600653d36b6 to your computer and use it in GitHub Desktop.
Save vik-y/31758420569473fd4d45b600653d36b6 to your computer and use it in GitHub Desktop.
MergeSort in Java
import java.util.Arrays;
import java.util.Scanner;
class MergeSort {
private static Scanner sc;
public static void main(String args[]) {
sc = new Scanner(System.in);
System.out.println("Enter no of terms");
int n = sc.nextInt();
System.out.println("Enter the terms");
int arr[] = new int[n];
for (int i = 0; i < n; i++)
arr[i] = sc.nextInt();
System.out.println("The unsorted array is:");
System.out.println(Arrays.toString(arr));
mergesort(arr);
System.out.println("The sorted array is:");
System.out.println(Arrays.toString(arr));
}
static void mergesort(int arr[]) {
int n = arr.length;
if (n < 2)
return;
int mid = n / 2;
int left[] = new int[mid];
int right[] = new int[n - mid];
for (int i = 0; i < mid; i++)
left[i] = arr[i];
for (int i = mid; i < n; i++)
right[i - mid] = arr[i];
// Mergesort the left half
mergesort(left);
// Mergesort the right half
mergesort(right);
// Now both left and right halves are sorted. SO merging them.
merge(arr, left, right);
}
public static void merge(int arr[], int left[], int right[]) {
int nL = left.length;
int nR = right.length;
int i = 0, j = 0, k = 0;
while (i < nL && j < nR) {
if (left[i] <= right[j]) {
arr[k] = left[i];
i++;
} else {
arr[k] = right[i];
j++;
}
k++;
}
// To merge the remaining values.
while (i < nL) {
arr[k] = left[i];
i++;
k++;
}
while (j < nR) {
arr[k] = right[j];
j++;
k++;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment