From 974c506c347f1c37bf566da1b983b2e6139892b0 Mon Sep 17 00:00:00 2001 From: "@2001!" <59911272+ErzaTitania-2001@users.noreply.github.com> Date: Wed, 9 Dec 2020 21:40:02 +0530 Subject: [PATCH 1/5] Merge Sort using Recursion. --- Java/sort/MergeSortRecursion.java | 104 ++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 Java/sort/MergeSortRecursion.java diff --git a/Java/sort/MergeSortRecursion.java b/Java/sort/MergeSortRecursion.java new file mode 100644 index 0000000000..8bbf773df6 --- /dev/null +++ b/Java/sort/MergeSortRecursion.java @@ -0,0 +1,104 @@ +//merge sort using divide and conquer and recursion +import java.util.Scanner; +class MergeSortRecursion +{ + + public static void sort(int arr[], int start, int end) + { + if (start < end) { + // Find the mid of the array + int mid = (start + end) / 2; + + // Sort first and second halves + sort(arr, start, mid); + sort(arr, mid + 1, end); + merge(arr,start, mid, end); // Merge the sorted halves + } + } + public static void merge(int arr[], int start, int mid, int end) + { + // Find sizes of two subarrays to be merged + int nL = mid - start + 1; //left size + int nR = end - mid; //right size + + /* Create temporary arrays */ + int L[] = new int[nL]; //left array + int R[] = new int[nR]; //right array + + /*Copy data to temporary arrays*/ + for (int i = 0; i < nL; ++i) + L[i] = arr[start + i]; + for (int j = 0; j < nR; ++j) + R[j] = arr[mid + 1 + j]; + int i = 0, j = 0; + + // Initial index of merged subarry array + int k = start; + while (i < nL && j < nR) { + if (L[i] <= R[j]) { + arr[k] = L[i]; + i++; + } + else { + arr[k] = R[j]; + j++; + } + k++; + } + + /* Copy remaining elements of L[] */ + while (i < nL) { + arr[k] = L[i]; + i++; + k++; + } + + /* Copy remaining elements of R[] */ + while (j < nR) { + arr[k] = R[j]; + j++; + k++; + } + } + public static void printArray(int arr[]) + { + int n = arr.length; + for (int i = 0; i < n; ++i) + System.out.print(arr[i] + " "); + System.out.println(); + } + public static void main(String args[]) + { + Scanner sc=new Scanner(System.in); + System.out.print("Enter size of array"+"\n"+" n = "); + int n=sc.nextInt(); + int arr[] = new int[n]; + for(int i=0;i Date: Wed, 9 Dec 2020 21:42:08 +0530 Subject: [PATCH 2/5] Merge Sort Recursion --- Java/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Java/README.md b/Java/README.md index bef99fa88b..5d7236d4f0 100644 --- a/Java/README.md +++ b/Java/README.md @@ -138,6 +138,7 @@ _add list here_ - [PancakeSort](sort/PancakeSort.java) - [Quick Sort](sort/QuickSort.java) - [Selection Sort](sort/SelectionSort.java) +- [Merge Sort Using Recursion](https://github.com/ErzaTitania-2001/NeoAlgo/blob/master/Java/sort/MergeSortRecursion.java) ## Machine Learning From db5e434195aec2a472ce8e130c6d247d10068be5 Mon Sep 17 00:00:00 2001 From: "@2001!" <59911272+ErzaTitania-2001@users.noreply.github.com> Date: Thu, 10 Dec 2020 09:55:12 +0530 Subject: [PATCH 3/5] Update MergeSortRecursion.java --- Java/sort/MergeSortRecursion.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Java/sort/MergeSortRecursion.java b/Java/sort/MergeSortRecursion.java index 8bbf773df6..a15b607b13 100644 --- a/Java/sort/MergeSortRecursion.java +++ b/Java/sort/MergeSortRecursion.java @@ -5,7 +5,10 @@ class MergeSortRecursion public static void sort(int arr[], int start, int end) { - if (start < end) { + if(start==end) //base case + return; + else + { // Find the mid of the array int mid = (start + end) / 2; @@ -101,4 +104,4 @@ public static void main(String args[]) Space Complexity : O(n) */ - \ No newline at end of file + From 58f09d6f833a133d6b698d560968816e60bce8be Mon Sep 17 00:00:00 2001 From: "@2001!" <59911272+ErzaTitania-2001@users.noreply.github.com> Date: Thu, 10 Dec 2020 15:37:40 +0530 Subject: [PATCH 4/5] Update MergeSortRecursion.java /changed done. --- Java/sort/MergeSortRecursion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Java/sort/MergeSortRecursion.java b/Java/sort/MergeSortRecursion.java index a15b607b13..9ae305b99f 100644 --- a/Java/sort/MergeSortRecursion.java +++ b/Java/sort/MergeSortRecursion.java @@ -10,7 +10,7 @@ public static void sort(int arr[], int start, int end) else { // Find the mid of the array - int mid = (start + end) / 2; + int mid = start + ((end - start) / 2); // Sort first and second halves sort(arr, start, mid); From 9b149ba3c81ac05e5e753f467d1848fd1a777b86 Mon Sep 17 00:00:00 2001 From: "@2001!" <59911272+ErzaTitania-2001@users.noreply.github.com> Date: Thu, 10 Dec 2020 21:26:31 +0530 Subject: [PATCH 5/5] Update README.md --- Java/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Java/README.md b/Java/README.md index 5d7236d4f0..7c528e86e0 100644 --- a/Java/README.md +++ b/Java/README.md @@ -138,7 +138,7 @@ _add list here_ - [PancakeSort](sort/PancakeSort.java) - [Quick Sort](sort/QuickSort.java) - [Selection Sort](sort/SelectionSort.java) -- [Merge Sort Using Recursion](https://github.com/ErzaTitania-2001/NeoAlgo/blob/master/Java/sort/MergeSortRecursion.java) +- [Merge Sort Using Recursion](sort/MergeSortRecursion.java) ## Machine Learning