我一直在阅读Sedgewick和Wayne的《算法,第四版》。这本书介绍了两种使用归并排序的方法。使用标准的自顶向下递归归并排序或者自底向上归并排序。
是否有任何情况下自底向上归并排序比自顶向下版本更可取?
我一直在阅读Sedgewick和Wayne的《算法,第四版》。这本书介绍了两种使用归并排序的方法。使用标准的自顶向下递归归并排序或者自底向上归并排序。
是否有任何情况下自底向上归并排序比自顶向下版本更可取?
递归归并排序需要O(log n)
的递归栈空间,但底部向上版本让您可以做得更好(没有递归栈,只需几个整数来跟踪输入中的位置)。
如果您遇到一些不支持递归且仅提供有限内存用于堆栈(例如嵌入式系统)的语言,则底部向上版本将是您唯一的选择。
这里有一个底部向上版本,展示了我的意思。