import
java.io.*;
import
java.util.*;
class
GFG {
static
List<Integer> merge(List<Integer> arr1,
List<Integer> arr2)
{
List<Integer> arr3 =
new
ArrayList<>();
int
i =
0
, j =
0
;
while
(i < arr1.size() && j < arr2.size()) {
if
(arr1.get(i) < arr2.get(j))
arr3.add(arr1.get(i++));
else
arr3.add(arr2.get(j++));
}
while
(i < arr1.size())
arr3.add(arr1.get(i++));
while
(j < arr2.size())
arr3.add(arr2.get(j++));
return
arr3;
}
static
List<List<Integer> > split(List<Integer> arr)
{
List<List<Integer> > subarr
=
new
ArrayList<>(Arrays.asList(
new
ArrayList<>(),
new
ArrayList<>()));
int
mid = arr.size() /
2
;
for
(
int
i =
0
; i < mid; i++)
subarr.get(
0
).add(arr.get(i));
for
(
int
i = mid; i < arr.size(); i++)
subarr.get(
1
).add(arr.get(i));
return
subarr;
}
static
List<Integer> burstSort(List<Integer> arr)
{
if
(arr.size() ==
1
)
return
arr;
List<List<Integer> > subarr = split(arr);
List<Integer> arr1 = burstSort(subarr.get(
0
));
List<Integer> arr2 = burstSort(subarr.get(
1
));
return
merge(arr1, arr2);
}
public
static
void
main(String[] args)
{
List<Integer> arr =
new
ArrayList<>();
arr.add(
1
);
arr.add(
5
);
arr.add(
3
);
arr.add(
7
);
arr.add(
2
);
arr.add(
4
);
arr.add(
6
);
arr = burstSort(arr);
for
(
int
i =
0
; i < arr.size(); i++)
System.out.print(arr.get(i) +
" "
);
System.out.println();
}
}