Skip to content

Commit 4f611e6

Browse files
Added merge sort program
1 parent bde484b commit 4f611e6

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

MergeSort.java

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.util.Scanner;
2+
3+
public class MergeSort{
4+
public static void main(String[] args) {
5+
Scanner sc = new Scanner(System.in);
6+
int n = sc.nextInt();
7+
int[] arr = new int[n];
8+
for(int i=0;i<n;i++) arr[i] = sc.nextInt();
9+
mergeSort(arr,0,n-1);
10+
for(int i:arr) System.out.print(i + ",");
11+
System.out.println();
12+
}
13+
public static void mergeSort(int[] arr,int l,int r){
14+
if(l < r){
15+
int m = (l+r)/2;
16+
mergeSort(arr, l, m);
17+
mergeSort(arr, m+1, r);
18+
merge(arr,l,m,r);
19+
}
20+
}
21+
public static void merge(int[] arr,int l,int m,int r){
22+
int n1 = m - l + 1;
23+
int n2 = r -m;
24+
int[] left = new int[n1];
25+
int[] right = new int[n2];
26+
27+
for(int i=0;i<n1;i++) left[i] = arr[l + i];
28+
for(int i=0;i<n2;i++) right[i] = arr[m + i + 1];
29+
30+
int i = 0, j= 0,k = l;
31+
while(i< n1 && j < n2){
32+
if(left[i] < right[j]){
33+
arr[k] = left[i];
34+
i++;k++;
35+
}
36+
else{
37+
arr[k] = right[j];
38+
j++;k++;
39+
}
40+
}
41+
while(i < n1){
42+
arr[k] = left[i];
43+
i++;k++;
44+
}
45+
while(j < n2){
46+
arr[k] = right[j];
47+
j++;k++;
48+
}
49+
}
50+
}

0 commit comments

Comments
 (0)