package sort;
/**
* èªåºåä¸å½å¹¶æåº
*
* @author å壮é£
* https://github.com/zfman.
* https://blog.csdn.net/lzhuangfei.
*/
public class DownToUpMergeSort> extends MergeSort {
/**
* å
å½å¹¶é£äºå¾®åæ°ç»ï¼ç¶åæå¯¹å½å¹¶å¾å°ç微忰ç»ã
*
* @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 sort = new DownToUpMergeSort<>();
sort.sort(arr);
ArrayUtils.printArray(arr);
}
}