实现自底向上的归并排序

来源:2-5 实现自底向上的归并排序

人性的弱点

2020-10-22 15:23:35

这样实现的方式符合要求吗

在这里输入代码,可通过选择【代码

E EEarrEcopyOfarrarrsortarr

语言】突出显示

写回答

2回答

liuyubobobo

2020-10-23

可以。但是你的代码本质是将一重 for 循环改成了尾递归,这个递归意义不大,我们通常不将包含递归的代码叫做“自底向上”。


但依然是,你的代码是正确的。


继续加油!:)

0

人性的弱点

提问者

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);
}


0

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2610 学习 · 1087 问题

查看课程