【问题标题】:Merge sort recursion call stack合并排序递归调用栈
【发布时间】:2014-12-15 20:56:18
【问题描述】:

我试图了解合并排序递归堆栈实际上如何设法将两个数组合并为一个排序数组。

代码和输出位于 -https://gist.github.com/antani/144a2dfc85d89ae86297(以防止问题混乱)

我无法可视化此算法的堆栈跟踪

【问题讨论】:

  • 合并不是由递归调用完成的。相反,它是由完全普通的while 循环完成的。
  • 您到底想知道什么?看看右边en.wikipedia.org/wiki/Merge_sort 的动画图像,你应该知道它是如何完成的。

标签: sorting recursion mergesort


【解决方案1】:

好吧,如果数组leftright 将被合并,它们就会被排序。然后算法将第一个也就是最小的left-value 与最小的right-value 进行比较。两者中较小的值是结果数组的下一个值。

在这部分之后,结果数组也被排序,并将返回到递归深度/步长/迭代n -1...

也许这个动画工作排序算法会让你明白:http://www.sorting-algorithms.com

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 2021-08-12
    • 1970-01-01
    • 2021-11-06
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多