Skip to content

Commit 626d51c

Browse files
committed
Merge Sort
1 parent f5a4a2c commit 626d51c

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.algorithm.sorting;
2+
3+
import java.util.Arrays;
4+
5+
public class MergeSort {
6+
public static void main(String[] args) {
7+
int array[] = {90,23,101,45,65,23,67,89,34,23};
8+
System.out.println("Before Sorting :: "+Arrays.toString(array));
9+
sort(array,0,array.length-1);
10+
System.out.println("After Sorting :: "+Arrays.toString(array));
11+
}
12+
13+
public static void mergeSort(int array[], int leftIndex, int midIndex, int rightIndex) {
14+
int n1 = midIndex - leftIndex + 1;
15+
int n2 = rightIndex - midIndex;
16+
17+
int leftArray[] = new int[n1];
18+
int rightArray[] = new int[n2];
19+
20+
for (int i = 0; i < n1; ++i)
21+
leftArray[i] = array[leftIndex + i];
22+
for (int j = 0; j < n2; ++j)
23+
rightArray[j] = array[midIndex + 1 + j];
24+
25+
int i = 0, j = 0;
26+
int k = leftIndex;
27+
while (i < n1 && j < n2) {
28+
if (leftArray[i] <= rightArray[j]) {
29+
array[k] = leftArray[i];
30+
i++;
31+
} else {
32+
array[k] = rightArray[j];
33+
j++;
34+
}
35+
k++;
36+
}
37+
38+
while (i < n1) {
39+
array[k] = leftArray[i];
40+
i++;
41+
k++;
42+
}
43+
while (j < n2) {
44+
array[k] = rightArray[j];
45+
j++;
46+
k++;
47+
}
48+
}
49+
50+
public static void sort(int array[], int leftIndex, int rightIndex) {
51+
if (leftIndex < rightIndex) {
52+
int midIndex = (leftIndex + rightIndex) / 2;
53+
sort(array, leftIndex, midIndex);
54+
sort(array, midIndex + 1, rightIndex);
55+
mergeSort(array, leftIndex, midIndex, rightIndex);
56+
}
57+
}
58+
}

0 commit comments

Comments
 (0)