递归思想应用之合并排序——过程详解、时间复杂度和代码实现

本文详细介绍了递归思想及其在算法中的应用,特别是以合并排序为例,阐述了分治法的基本思想。通过分解、merge过程和伪代码,展示了合并排序的完整过程,并探讨了其时间复杂度。最后,通过递归树的形式推测了合并排序的时间复杂度为O(nlgn)。
摘要由CSDN通过智能技术生成

递归思想

递归思想是算法中常用到的一种构造思路。递归允许函数或过程对自身进行调用,是对算法中重复过程的高度概括,从本质层面进行刻画,避免算法书写中过多的嵌套循环和分支语法。因此,是对算法结构很大的简化。
递归分为广义递归和狭义递归。狭义递归就是本文重点讨论的内容,即函数调用自身。广义递归还包括了A调用B–B调用C–C调用D 这样不同函数的调用。
从数学形式上,狭义递归形式可以写做一个函数表达式:
f ( n ) = G ( f ( g ( n ) ) ) f(n)=G(f(g(n))) f(n)=G(f(g(n))),即 f ( n ) f(n) f(n)可以通过一个 f ( g ( n ) ) f(g(n)) f(g(n))的表达式间接推出。当然,如果递归式可解,则最后也能将 f ( n ) f(n) f(n)直接用n表示出来。
如: f ( n ) = f ( n − 1 ) + n f(n)=f(n-1)+n f(n)=f(n1)+n (1)
f ( n ) = f ( n 2 ) + n f(n)=f(\frac{n}{2})+n f(n)=f(2n)+n (2)
f ( n ) = f ( n 1 ) + f ( n 2 ) + . . . + f ( n k ) f(n)=f(n_1)+f(n_2)+...+f(n_k) f(n)=f(n1)+

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值