将排序与修改合并以避免复制

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

我正在我的数据结构类中的一个项目上工作。该项目是实现具有最少复制的合并排序算法。该想法是分配临时存储一次,在递归之外,并避免复制到最后。这个想法是每次对mergesort的递归调用都会使两个数组之间的数据“反弹”。首先,我们从输入到输出递归合并sort,然后,从输出回到输入归并。如果我们跟踪当前数据的位置(无论是在输入数组中还是在输出数组中),在递归过程中,我们都可以避免在递归过程中进行复制,并将其保存到最后。

我知道如何使用临时数组实现合并排序,因为它用于保存中间结果。在这里,我们必须将排序合并到外面,然后将递归合并排序的结果复制回内部,然后再进行合并从头到尾的操作。但是,我的问题是我无法理解如何通过一次调用temp以及避免复制到最后来进行合并排序。

我相信我能够编写该程序,但是只需要更好的理解。基本上,我需要一些深入的解释。

我正在我的数据结构类中的一个项目上工作。该项目是实现具有最小复制的合并排序算法。该想法是在递归之外分配一次临时存储,...

java mergesort
1个回答
0
投票

使用自下而上的合并排序遵循逻辑会更简单,但是问题似乎集中在自上而下的合并排序。

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