栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

C堆栈中的递归

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C堆栈中的递归

让我们举一个例子

数组

arr ={ 5,2,4,7,1,3,2,6};
8个元素

      1 2 3 4 5 6 7 ^(partition+mergeSort) |+------------+ +---------------+         |        |     2 4 5 7    1 2 3 6         ^   (partition+mergeSort)        ^ (partition+mergeSort)|        |     +--+ +---+          +--+ +---+     |        |          |        |    2  5     4  7      1   3     2  6          ^ (partition+mergeSort)          ^  (partition+mergeSort)|        |      +---+ +---+         +---+ +---+     |         |         |         |   5   2     4   7     1  3      2   6       4 elements4 elements    Initial Unsorted Array

从下到上,形成两个阵列

arr[low...mid]
arr[mid+1...high]
在每个递归调用上,最后它们都被合并。

只要

low
<
high

它只是一个示例,说明如何

mergeSort
在这里工作,您可以在此示例中遵循代码。

partition(arr, 0,7)
对该未排序数组进行的调用将具有:

初次

mid =3
arr
使用时分为两部分

partion(arr,0,3)
partion(arr,4,7)

这些分区中的每个分区又被拆分为两个部分,即0到3划分为

(0,1)
(2,3)
,再进一步是
(0,1)
(1,1)
(1,1)
由于`low

high

最后2个元素与合并而被跳过
mergeSort`

一组如此小的排序数组随后在后续遍历中从递归中合并出来时最终合并在一起。

这在这里很难解释,以文本格式在纸上尝试一下,我相信您可以用更大的数组(例如4个元素)弄清楚​​。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号