diff --git a/README.md b/README.md index cd92c21..677cb28 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ You can contribute to any open source project hosted on Github.com and contribut | Longest Common Subsequence | | | | | | | | | | | Longest Increasing Subsequence | | :white_check_mark: | | | | | | | | | Longest Palindromic Substring | | :white_check_mark: | | | | | | | | -| Merge Sort | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | | | | TS | +| Merge Sort | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | TS | | Naive Search | | | | | | | | | | | Quick Sort | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | Radix Sort | | | | | | | | | | diff --git a/algorithms/java/merge_sort.java b/algorithms/java/merge_sort.java new file mode 100644 index 0000000..b7572ae --- /dev/null +++ b/algorithms/java/merge_sort.java @@ -0,0 +1,64 @@ +import java.io.*; +public class MergeSort{ + void merge(int arr[], int l, int m, int r){ + // Your code here + int[] mix = new int[r-l+1]; + int i = l; + int j = m+1; + int k = 0; + while(i <= m && j <= r) { + if(arr[i] <= arr[j]) { + mix[k] = arr[i]; + i++; + } + else { + mix[k] = arr[j]; + j++; + } + k++; + } + + while(i <= m) { + mix[k] = arr[i]; + i++; + k++; + } + + while(j <= r) { + mix[k] = arr[j]; + j++; + k++; + } + + for(i=0;i l) { + int m = l + (r-l) / 2; + mergeSort(arr, l, m); + mergeSort(arr, m+1, r); + merge(arr, l, m, r); + } + } + + 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[]){ + int arr[] = { 82, 61, 33, 45, 16, 57 }; + System.out.println("Given array is"); + printArray(arr); + MergeSort ob = new MergeSort(); + ob.mergeSort(arr, 0, arr.length - 1); + System.out.println("\nSorted array is"); + printArray(arr); + } +}