自下而上vs自上而下的合并排序

时间:2020-09-24 13:22:26

标签: merge language-agnostic mergesort

我学习或看到的实现合并排序的方式一直是自上而下的递归方法,该方法需要O(n)额外的内存。

似乎采用自下而上的方法,您可以使用恒定的内存来做到这一点。合并操作与自顶向下方法相同。因此在我看来,自下而上优于自上而下。

为什么自上而下的方法更常用和教导?

1 个答案:

答案 0 :(得分:2)

自上而下的教学较为普遍,但自下而上或更准确的说,插入排序和自下而上合并排序的混合体在库中更为常用。

第二个缓冲区的空间开销对于常规的自上而下和自下而上的合并排序O(n)都是相同的。自顶向下的堆栈开销为O(log2(n))。

有一些合并排序的变体,它们使用较小的第二缓冲区或不使用第二缓冲区。