实现自底向上的归并排序
来源:2-5 实现自底向上的归并排序
人性的弱点
2020-10-22 15:23:35
这样实现的方式符合要求吗
在这里输入代码,可通过选择【代码
E EEarrEcopyOfarrarrsortarr语言】突出显示
2回答
liuyubobobo
2020-10-23
可以。但是你的代码本质是将一重 for 循环改成了尾递归,这个递归意义不大,我们通常不将包含递归的代码叫做“自底向上”。
但依然是,你的代码是正确的。
继续加油!:)
人性的弱点
提问者
2020-10-22
public static <E extends Comparable<E>> void sort(E[] arr) { E[] temp = Arrays.copyOf(arr, arr.length); sort(arr, 1, temp); } private static <E extends Comparable<E>> void sort(E[] arr, int length, E[] temp) { if (length >= arr.length) return; for (int i = 0; i + length < arr.length; i += 2 * length) { if (arr[i + length - 1].compareTo(arr[i + length]) > 0) merge(arr, i, i + length - 1, Math.min(arr.length - 1, i + 2 * length - 1), temp); } sort(arr, length * 2, temp); }
相似问题