forked from zfman/AlgorithmCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDownToUpMergeSort.java
More file actions
34 lines (31 loc) · 886 Bytes
/
Copy pathDownToUpMergeSort.java
File metadata and controls
34 lines (31 loc) · 886 Bytes
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
package sort;
/**
* 自底向上归并排序
*
* @author 刘壮飞
* https://github.com/zfman.
* https://blog.csdn.net/lzhuangfei.
*/
public class DownToUpMergeSort<T extends Comparable<T>> extends MergeSort<T> {
/**
* 先归并那些微型数组,然后成对归并得到的微型数组。
*
* @param nums
*/
@Override
public void sort(T[] nums) {
int n = nums.length;
tmp = (T[]) new Comparable[n];
for (int i = 1; i < n; i += i)
for (int j = 0; j < n - i; j += i + i)
merge(nums, j, j + i - 1, Math.min(j + i + i - 1, n - 1));
}
public static void main(String[] args) {
Integer[] arr = {
5, 1, 8, 7, 10, 6, 9, 5, 20, 3, 0
};
Sort<Integer> sort = new DownToUpMergeSort<>();
sort.sort(arr);
ArrayUtils.printArray(arr);
}
}