From 1827f993d22e82087a4b8769903fe474d616c34a Mon Sep 17 00:00:00 2001 From: mridul981 Date: Sun, 24 Mar 2019 21:33:48 +0530 Subject: [PATCH] Added java implementation of merge sort (#23993) * Added java implementation of merge sort * fix: changed to two space indentation --- .../sorting-algorithms/merge-sort/index.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/guide/english/algorithms/sorting-algorithms/merge-sort/index.md b/guide/english/algorithms/sorting-algorithms/merge-sort/index.md index 0264277eb1..b2da96a882 100644 --- a/guide/english/algorithms/sorting-algorithms/merge-sort/index.md +++ b/guide/english/algorithms/sorting-algorithms/merge-sort/index.md @@ -306,3 +306,54 @@ public class mergesort { } ``` +### Example in Java +```java +public class mergesort { + public static int[] mergesort(int[] arr, int lo, int hi) { + if (lo == hi) { + int[] ba = new int[1]; + ba[0] = arr[lo]; + return ba; + } + int mid = (lo + hi) / 2; + int arr1[] = mergesort(arr, lo, mid); + int arr2[] = mergesort(arr, mid + 1, hi); + return merge(arr1, arr2); + } + + public static int[] merge(int[] arr1, int[] arr2) { + int i = 0, j = 0, k = 0; + int n = arr1.length; + int m = arr2.length; + int[] arr3 = new int[m + n]; + while (i < n && j < m) { + if (arr1[i] < arr2[j]) { + arr3[k] = arr1[i]; + i++; + } else { + arr3[k] = arr2[j]; + j++; + } + k++; + } + while (i < n) { + arr3[k] = arr1[i]; + i++; + k++; + } + while (j < m) { + arr3[k] = arr2[j]; + j++; + k++; + } + return arr3; + } + + public static void main(String[] args) { + int arr[] = {2, 9, 8, 3, 6, 4, 10, 7}; + int[] so = mergesort(arr, 0, arr.length - 1); + for (int i = 0; i < arr.length; i++) + System.out.print(so[i] + " "); + } +} +```