写给自己!
递归式的时间复杂度很难人为的计算出来,根据算法导论知道一个应用公式:
使用时主要思路如下:
首先根据自己的递归代码写出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);
递归式时间复杂度的计算
最新推荐文章于 2024-08-08 16:53:05 发布