From 4a064736b8a7aaa497badc75646aea653d010885 Mon Sep 17 00:00:00 2001 From: Saksham-Gupta-1024 <59359000+Saksham-Gupta-1024@users.noreply.github.com> Date: Wed, 5 Oct 2022 01:31:02 +0530 Subject: [PATCH] Create mergesort.java --- mergesort.java | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 mergesort.java diff --git a/mergesort.java b/mergesort.java new file mode 100644 index 0000000..7a01743 --- /dev/null +++ b/mergesort.java @@ -0,0 +1,70 @@ +import java.util.Arrays; + +class Main { + + void merge(int array[], int p, int q, int r) { + + int n1 = q - p + 1; + int n2 = r - q; + + int L[] = new int[n1]; + int M[] = new int[n2]; + + for (int i = 0; i < n1; i++) + L[i] = array[p + i]; + for (int j = 0; j < n2; j++) + M[j] = array[q + 1 + j]; + + int i, j, k; + i = 0; + j = 0; + k = p; + + while (i < n1 && j < n2) { + if (L[i] <= M[j]) { + array[k] = L[i]; + i++; + } else { + array[k] = M[j]; + j++; + } + k++; + } + + while (i < n1) { + array[k] = L[i]; + i++; + k++; + } + + while (j < n2) { + array[k] = M[j]; + j++; + k++; + } + } + + void mergeSort(int array[], int left, int right) { + if (left < right) { + + int mid = (left + right) / 2; + + mergeSort(array, left, mid); + mergeSort(array, mid + 1, right); + + merge(array, left, mid, right); + } + } + + public static void main(String args[]) { + + int[] array = { 6, 5, 12, 10, 9, 1 }; + + Main ob = new Main(); + + ob.mergeSort(array, 0, array.length - 1); + + System.out.println("Sorted Array:"); + System.out.println(Arrays.toString(array)); + } +}