Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 3分区合并排序_Arrays_Quicksort_Mergesort - Fatal编程技术网

Arrays 3分区合并排序

Arrays 3分区合并排序,arrays,quicksort,mergesort,Arrays,Quicksort,Mergesort,我的教授分配给我的课程是在数组中用三部分分区和合并实现mergesort 这正是教授提出的问题。问题是我没有发现3路合并排序我只知道3路快速排序,所以我想他可能是想把一个数组,分成3个部分,然后合并排序这3个部分,我是通过将前2个部分合并排序,然后将合并的部分与第3个部分合并排序 我的想法正确吗?我做了正确的事情吗(已经实现了,但我没有发布代码,因为它与我的问题没有任何关系),或者我理解错了吗?我没有意识到类似于3路合并排序的东西 教授给我们的作业往往与我们尚未学习的内容有关,这就是为什么我对此

我的教授分配给我的课程是在数组中用三部分分区和合并实现mergesort

这正是教授提出的问题。问题是我没有发现3路合并排序我只知道3路快速排序,所以我想他可能是想把一个数组,分成3个部分,然后合并排序这3个部分,我是通过将前2个部分合并排序,然后将合并的部分与第3个部分合并排序

我的想法正确吗?我做了正确的事情吗(已经实现了,但我没有发布代码,因为它与我的问题没有任何关系),或者我理解错了吗?我没有意识到类似于3路合并排序的东西


教授给我们的作业往往与我们尚未学习的内容有关,这就是为什么我对此持怀疑态度,我在谷歌等网站上尽可能多地寻找答案。

一旦你将三个子数组合并排序,您可以一次性将它们合并在一起:比较所有三个元素中的第一个元素,并将最小的元素放入组合数组中,然后从获取最小元素的数组中获取下一个元素,然后再次进行比较,直到计算完所有子数组元素


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

它被称为三部分合并排序,因为它就是这样做的。
看一看

我实际上使用了数组。对三个数组中的每一个进行排序,然后按照我所说的将它们成对合并。至于你让我做什么,我想我可以一次完成,但对我来说太复杂了,这就是为什么我分两步完成,而第一步返回前两部分的合并数组。至于我的主要问题,我是否真的做对了,或者是否有一种方法可以实现一个与我所描述的操作无关的3向mergesort?如果您调用
Arrays.sort()
来进行排序,那么您就没有进行合并排序(除非该调用正在进行,这是不保证的)。合并排序是一个递归函数(递归调用自身对较小的数组进行排序),正如您在第二段中所描述的那样。当然,你可以一次合并两个数组,但是如果你同时合并所有三个数组,你会得到一些性能上的好处。你说,在我有了3个子数组之后,我应该合并对每个数组进行单独排序,作为最后一步,我应该合并对所有3个部分进行排序,或者他可能会问这样的问题。顺便说一句,他还没有回答是的,我所描述的和你列出的链接是一样的。我实际上在试图找到更多关于这种合并排序的资源,但我似乎找不到任何关于它的信息,例如,你知道在谷歌上找什么吗。谷歌搜索3-waymergesort或带有3个分区的mergesort绝对不会提供任何东西