-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMergedSort.java
78 lines (59 loc) · 1.84 KB
/
MergedSort.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// merged sort
import java.util.*;
class Firstclass {
public static void conquer(int arr[] , int sidx , int mididx , int eidx) {
int merged[] = new int[eidx - sidx + 1];
int idx1 = sidx;
int idx2 = mididx+1;
int x = 0;
while(idx1 <= mididx && idx2 <= eidx) {
if(arr[idx1] <= arr[idx2]) {
merged[x++] = arr[idx1++];
}
else {
merged[x++] = arr[idx2++];
}
}
while(idx1 <= mididx) {
merged[x++] = arr[idx1++];
}
while(idx2 <= eidx) {
merged[x++] = arr[idx2++];
}
for(int i = 0 , j = sidx; i < merged.length; i++ , j++) {
arr[j] = merged[i];
}
}
public static void divide(int arr[] , int sidx , int eidx) {
if(sidx >= eidx) {
return;
}
int mididx = sidx + (eidx - sidx) / 2;
divide(arr, sidx, mididx);
divide(arr, mididx+1, eidx);
conquer(arr, sidx, mididx, eidx);
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter number number of indexes: ");
int n = sc.nextInt();
int arr[] = new int[n];
int num = 1;
for(int i = 0; i < n; i += 1) {
System.out.print("Enter " + num + " index: ");
arr[i] = sc.nextInt();
num += 1;
}
System.out.println("Unsorted array: \n");
for(int i = 0; i < arr.length; i += 1) {
System.out.print(arr[i] + " ");
}
System.out.print("\n");
System.out.print("Sorted Array: \n");
int n1 = arr.length;
divide(arr, 0, n1-1);
for(int i = 0; i < arr.length; i += 1) {
System.out.print(arr[i] + " ");
}
}
}