From 26df3834a2187bc34ed19000fe0c474bbb6ad43b Mon Sep 17 00:00:00 2001 From: VemulapalliMukesh27 Date: Wed, 16 Oct 2024 11:28:06 +0530 Subject: [PATCH] Merge Sort Implementation --- Sorting Algo/mergeSort.java | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Sorting Algo/mergeSort.java diff --git a/Sorting Algo/mergeSort.java b/Sorting Algo/mergeSort.java new file mode 100644 index 0000000..4c4a6f3 --- /dev/null +++ b/Sorting Algo/mergeSort.java @@ -0,0 +1,81 @@ +public class MergeSort { + + // Function to merge two subarrays of arr[]. + // First subarray is arr[left..mid] + // Second subarray is arr[mid+1..right] + public static void merge(int[] arr, int left, int mid, int right) { + // Sizes of two subarrays to be merged + int n1 = mid - left + 1; + int n2 = right - mid; + + // Temporary arrays + int[] L = new int[n1]; + int[] R = new int[n2]; + + // Copy data to temporary arrays + for (int i = 0; i < n1; ++i) + L[i] = arr[left + i]; + for (int j = 0; j < n2; ++j) + R[j] = arr[mid + 1 + j]; + + // Merge the two subarrays + int i = 0, j = 0; + int k = left; + while (i < n1 && j < n2) { + if (L[i] <= R[j]) { + arr[k] = L[i]; + i++; + } else { + arr[k] = R[j]; + j++; + } + k++; + } + + // Copy remaining elements of L[], if any + while (i < n1) { + arr[k] = L[i]; + i++; + k++; + } + + // Copy remaining elements of R[], if any + while (j < n2) { + arr[k] = R[j]; + j++; + k++; + } + } + + // Main function that sorts arr[left..right] using merge() + public static void mergeSort(int[] arr, int left, int right) { + if (left < right) { + // Find the middle point + int mid = left + (right - left) / 2; + + // Recursively sort the first and second halves + mergeSort(arr, left, mid); + mergeSort(arr, mid + 1, right); + + // Merge the sorted halves + merge(arr, left, mid, right); + } + } + + // Utility function to print the array + public static void printArray(int[] arr) { + for (int value : arr) { + System.out.print(value + " "); + } + System.out.println(); + } + + public static void main(String[] args) { + int[] numbers = {12, 11, 13, 5, 6, 7}; + System.out.println("Original array:"); + printArray(numbers); + mergeSort(numbers, 0, numbers.length - 1); + System.out.println("Sorted array:"); + printArray(numbers); + } +}