通过归并排序算法(mergesort)理解递归在程序中的运行过程

本文探讨了递归在程序中的重要性,特别是如何通过归并排序算法(mergesort)来理解递归的运行过程。归并排序采用分治策略,将数组分为两部分分别排序后再合并。在代码分析中,`Merge_sort_c`函数的终止条件避免了栈溢出问题。通过递归调用的示例,展示了递归如何在计算机中执行,帮助读者形象地理解递归的工作原理。
摘要由CSDN通过智能技术生成

递归的重要性不言而喻,它是很多算法实现的基础,比如含有分治思想的算法(归并排序,二分查找),有关遍历二叉树的算法,或者求解数学递推式的算法(斐波那契数列,n的阶乘),回溯法,动态规划等等, 一提到递归总有点发蒙,理论上比较好理解,但是一遇到复杂一点的递归算法,在大脑中很难想象递归在计算机中是怎么实现的。跟着一步步debug才终于搞明白,所以在这里先把过程给记录下来。
归并排序算法:就是运用分治的思想,把排序的过程变为先把数组分成左右两个部分,分别排序,再将排好序的两个数组合并成一个有序数组。
代码:

void Merge(vector<int>& inputArray, int p, int q, int r)
    {
   
        int i = p;
        int j = q + 1;
        vector<int> temp;
        while (i <= q && j <= r)
        {
   
            if (inputArray[i] <= inputArray[j]) {
   
                temp.push_back(input
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值