Skip to content

Commit 2c50872

Browse files
author
Farheen Shabbir Shaikh
committed
Add Merge Sort algorithm in Java with recursive implementation
1 parent f9e9f20 commit 2c50872

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

Sorting/MergeSort.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/**
2+
* MergeSort.java
3+
* This program implements the Merge Sort algorithm using recursion.
4+
* Time Complexity: O(n log n)
5+
*/
6+
7+
public class MergeSort {
8+
9+
// Method to recursively divide and sort the array
10+
public static void mergeSort(int[] arr, int left, int right) {
11+
if (left < right) {
12+
int mid = (left + right) / 2;
13+
14+
// Recursively sort the left half
15+
mergeSort(arr, left, mid);
16+
17+
// Recursively sort the right half
18+
mergeSort(arr, mid + 1, right);
19+
20+
// Merge the two sorted halves
21+
merge(arr, left, mid, right);
22+
}
23+
}
24+
25+
// Method to merge two sorted halves
26+
public static void merge(int[] arr, int left, int mid, int right) {
27+
// Sizes of subarrays
28+
int n1 = mid - left + 1;
29+
int n2 = right - mid;
30+
31+
// Temp arrays
32+
int[] L = new int[n1];
33+
int[] R = new int[n2];
34+
35+
// Copy data to temp arrays
36+
for (int i = 0; i < n1; ++i)
37+
L[i] = arr[left + i];
38+
for (int j = 0; j < n2; ++j)
39+
R[j] = arr[mid + 1 + j];
40+
41+
// Merge temp arrays back into arr
42+
int i = 0, j = 0, k = left;
43+
while (i < n1 && j < n2) {
44+
if (L[i] <= R[j]) {
45+
arr[k++] = L[i++];
46+
} else {
47+
arr[k++] = R[j++];
48+
}
49+
}
50+
51+
// Copy remaining elements of L[]
52+
while (i < n1)
53+
arr[k++] = L[i++];
54+
55+
// Copy remaining elements of R[]
56+
while (j < n2)
57+
arr[k++] = R[j++];
58+
}
59+
60+
public static void main(String[] args) {
61+
int[] arr = {38, 27, 43, 3, 9, 82, 10};
62+
mergeSort(arr, 0, arr.length - 1);
63+
64+
System.out.println("Sorted array:");
65+
for (int value : arr) {
66+
System.out.print(value + " ");
67+
}
68+
}
69+
}

0 commit comments

Comments
 (0)