-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMerge_sort_algoritham.java
More file actions
40 lines (40 loc) · 1.21 KB
/
Merge_sort_algoritham.java
File metadata and controls
40 lines (40 loc) · 1.21 KB
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
class HelloWorld {
public static void main(String[] args) {
int [] value = {5, 4, 3, 9, 6, 7};
divideArray(value, 0, value.length-1);
for(int i=0; i < value.length; i++){
System.out.print(value[i] +" ");
}
}
public static void divideArray(int[] value, int si, int ei){
if(si >= ei){
return;
}
int mid = si + (ei - si) / 2;
divideArray(value, si, mid);
divideArray(value, mid+1, ei);
sortArray(value, mid, si, ei);
}
public static void sortArray(int[] value, int mid, int si, int ei){
int [] mergeArray = new int[ei - si + 1];
int idx1 = si;
int idx2 = mid+1;
int x = 0;
while (idx1 <= mid && idx2 <= ei){
if(value[idx1] <= value[idx2]){
mergeArray[x++] = value[idx2++];
} else {
mergeArray[x++] = value[idx1++];
}
}
while (idx1 <= mid){
mergeArray[x++] = value[idx1++];
}
while (idx2 <= ei){
mergeArray[x++] = value[idx2++];
}
for(int i= 0, j = si; i < mergeArray.length; i++, j++){
value[j] = mergeArray[i];
}
}
}