1

我的教授指派我的班级在具有 3 部分分区和合并的数组中实现合并排序。

这正是教授提出的问题。问题是我没有发现 3 路合并排序之类的东西我只知道 3 路快速排序所以我认为他可能打算获取一个数组,将其拆分为 3 部分,然后将这 3 部分合并在一起,我m 通过将前 2 个部分合并排序,然后将合并的部分与第 3 个部分合并排序来做到这一点。

我是否认为正确并且我做对了(已经实现但我没有发布代码,因为它与我的问题没有任何关系)或者我理解错误并且有类似 3 路合并排序的东西我不知道。

教授倾向于给我们分配与我们尚未学过的东西有关的作业,这就是为什么我对此持怀疑态度,并且我尽可能多地在 Google 等中查看。

4

2 回答 2

2

将三个子数组合并排序后,您可以一次将它们合并在一起:比较所有三个子数组的第一个元素并将最小的元素放入组合数组中,然后从数组中取出最小元素并进行比较再次直到所有子数组元素都被考虑在内。

确保您处理数组中只有两个元素的情况(因此您不能将其划分为三个非空部分)。此外,在上一段中,合并时一个数组将在其他数组之前为空,因此您也需要考虑这一点。

于 2012-05-19T18:44:55.983 回答
0

它被称为三部分合并排序,因为它就是这样做的。看看http://mathbits.com/MathBits/CompSci/Arrays/Merge.htm

于 2012-12-10T15:47:20.437 回答