public
static
void
sort(Comparable[] arr){
int
n = arr.length;
for
(
int
i =
0
; i < n ; i +=
2
){
InsertionSort.sort(arr, i, Math.min(i+
1
, n-
1
) );
}
for
(
int
i =
0
; i < n ; i ++)
System.out.println(arr[i]);
for
(
int
sz =
2
; sz < n ; sz += sz )
for
(
int
i =
0
; i < n - sz ; i += sz+sz )
if
( arr[i+sz-
1
].compareTo(arr[i+sz]) >
0
)
merge(arr, i, i+sz-
1
, Math.min(i+sz+sz-
1
,n-
1
) );
}