递归式时间复杂度的计算

写给自己!
递归式的时间复杂度很难人为的计算出来,根据算法导论知道一个应用公式:
这里写图片描述
使用时主要思路如下:
首先根据自己的递归代码写出T(n),T(n)为递归所用的总时间,其中,n为输入的规模,a为分解成子问题的个数,n/b为子问题输入的子规模,f(n)是一个渐进正的函数。a个子问题被分别递归的解决,时间各为T(n/b)。
第二,看f(n)与n*logb a比较大小,时间复杂度由较大的一个决定。
第三,在比较出来以后,一定要去验证其前提条件十分符合,符合的才能是正确的复杂度,否则,用代换法或递归树法。
递归式运行时间定义如下:
这里写图片描述
用合并排序来说明:
D(n)为分解时占用的时间,这一步仅仅计算出数组的中间位置,所以是常量时间Θ(1);
C(n)为合并的运行时间,所以C(n)=Θ(n);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值