归并排序_迭代方法实现 中对栈的应用

image.png

再java中 递归算法使用的是栈来存储的

运行结果

image.png

面向结果编程:
对于前三个a,是func(array,lo,mid) 在一直操作(类似深度优先),直到 满足退出条件 之后执行func(array,lo,mid)第三次入栈的 func(array,mid+1,hi)(类似回溯),因为第三次入栈后, 原数组已经被切分为最小单元 , 不能再进行切分了, 所以 第二个 func(array,mid+1,hi)也不能进行切分,所以直接进行归并操作, c++,d++.归并操作执行完之后,再进行回溯,回到第二层,依次执行, 直到回溯到 第一层进行第一次切分后右部的归并操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文已被Github仓库收录 https://github.com/silently9527/JavaCore[h...
    Herman7z阅读 189评论 0 0
  • 核心思想:将一个数组进行排序,可以先(递归)将他分成两半分别排序,然后把结果合并起来.若将两个有序表合并成一个有序...
    浩林Leon阅读 2,273评论 0 1
  • 接下来准备学习一下归并排序去别的blog看了一段,很多博客概括介绍归并的时候是这样子的: 基本理念:分治思想(di...
    阿飞不理飞阅读 309评论 0 0
  • 归并排序的核心在于如何合并两个有序序列,即merge方法的实现。我们可以借助一个辅助数组aux,第一步将原序列a[...
    CrisWu阅读 394评论 0 0
  • 一、排序思想 归并排序是采用分治算法,即将一个大问题切分成一些小问题然后递归求解。归并排序的图解如下: 分的过程简...
    贪挽懒月阅读 248评论 0 1