2014-10-20 122 views
1

我想了解如何合并排序递归堆栈实际上管理将两个数组合并到排序的数组。合并排序递归调用堆栈

代码和输出都在 - https://gist.github.com/antani/144a2dfc85d89ae86297(以避免出现混乱的问题)

我无法想象这个算法的堆栈跟踪

+0

**合并**不是由递归调用完成的。相反,它是由完美的普通'while'循环完成的。 – Pointy 2014-10-20 19:05:52

+0

你想知道什么?看看http://en.wikipedia.org/wiki/Merge_sort上的动画图片,你应该知道它是如何完成的。 – plalx 2014-10-20 19:06:22

回答

0

嘛,两个数组leftright排序如果他们将被合并。然后该算法将第一个因此最小的left值与最小的right值进行比较。两者中较小的值是结果数组的下一个值。

这部分所产生的阵列也排序,将返回到递归深/台阶/迭代n -1 ......之后

也许这个动画的工作排序算法将地狱您了解:http://www.sorting-algorithms.com