Skip to content

Commit 09980b3

Browse files
Add files via upload
1 parent 6938527 commit 09980b3

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

src/MergeSortApp.java

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package sorting;
2+
3+
import java.util.Arrays;
4+
5+
public class MergeSortApp {
6+
7+
//https://t.me/leetcodin/332
8+
//Time complexity: O(N * logN)
9+
//Space complexity: O(N)
10+
private static class MergeSort {
11+
private int[] array;
12+
13+
public void mergeSort(int[] arr) {
14+
array = arr;
15+
int len = array.length;
16+
int[] workspace = new int[len];
17+
recursiveMergeSort(workspace, 0, len - 1);
18+
}
19+
20+
private void recursiveMergeSort(int[] workSpace, int lowerBound,
21+
int upperBound) {
22+
if (lowerBound == upperBound) {
23+
return;
24+
} else {
25+
int mid = (lowerBound + upperBound) / 2;
26+
recursiveMergeSort(workSpace, lowerBound, mid);
27+
recursiveMergeSort(workSpace, mid + 1, upperBound);
28+
merge(workSpace, lowerBound, mid + 1, upperBound);
29+
}
30+
}
31+
32+
private void merge(int[] workspace, int lowPointer,
33+
int highPointer, int upperBound) {
34+
int i = 0;
35+
int lowerBound = lowPointer;
36+
int mid = highPointer - 1;
37+
int numberOfItems = upperBound - lowerBound + 1;
38+
39+
while (lowPointer <= mid && highPointer <= upperBound) {
40+
if (array[lowPointer] < array[highPointer]) {
41+
workspace[i++] = array[lowPointer++];
42+
} else {
43+
workspace[i++] = array[highPointer++];
44+
}
45+
}
46+
47+
while (lowPointer <= mid)
48+
workspace[i++] = array[lowPointer++];
49+
50+
while (highPointer <= upperBound)
51+
workspace[i++] = array[highPointer++];
52+
53+
for (i = 0; i < numberOfItems; i++)
54+
array[lowerBound + i] = workspace[i];
55+
}
56+
}
57+
58+
public static void main(String[] args) {
59+
MergeSort mergeSort = new MergeSort();
60+
int[] arr = new int[]{6, 5, 3, 1, 8, 7, 2, 4};
61+
System.out.println("Before: " + Arrays.toString(arr));
62+
mergeSort.mergeSort(arr);
63+
System.out.println("After: " + Arrays.toString(arr));
64+
}
65+
}

0 commit comments

Comments
 (0)