与插入排序相比,合并排序本质上是在时间上交换空间

问题描述 投票:1回答:2

我试图从直觉上理解,合并排序的运行时如何比插入排序好得多。

即使我们通过合并排序进行分而治之,但在单个CPU上,合并排序执行树的每个节点都将顺序执行。 每个递归调用(迭代)上较小的输入大小是否是合并排序的关键?]] >>

还是这样的事实,因为合并排序不是就地且使用O(n)空间,这节省了我们在插入排序中必须做的移位次数,以便为较小的数字插入空间。 但是在每个合并步骤中复制左右临时数组中的元素的代价如何呢?

我试图从直觉上理解,合并排序的运行时如何比插入排序好得多。即使我们使用合并排序进行分治,但在单个CPU上,每个...

algorithm sorting mergesort insertion-sort
2个回答
1
投票

是的,与插入排序相比,较小的输入大小大部分来自合并排序的加快。 mergesort使用更多空间的事实更多地是它如何工作的产物,而不是加速的内在原因。

这里是一种查看方式。我们知道插入排序平均花费时间Θ(n 2


0
投票

即使在典型的X86上,n> =〜128,就地合并排序(O(1)空间)也比插入排序要快。

© www.soinside.com 2019 - 2024. All rights reserved.