递归问题时间复杂度求解-主定理Master Theorem

主定理Master Theorem

递归问题的时间复杂度=递归次数*每次递归的时间复杂度 分析递归问题的时间复杂度一般有三种方法(1)递归树法,(2)代入法,(3)主定理法。在算法分析中,主定理(master theorem)提供了用渐近符号(大O符号)表示许多由分治法得到的递推关系式的方法。

主定理适用于求解如下递归式算法的时间复杂度:

在这里插入图片描述其中:
(1) n 是问题规模大小;
(2) a 是原问题的子问题个数;
(3) n/b 是每个子问题的大小,这里假设每个子问题有相同的规模大小;
(4) f(n) 是将原问题分解成子问题和将子问题的解合并成原问题的解的时间。

原作者的渐近分析如下:
递归问题时间复杂度求解-主定理Master Theorem_第1张图片
通俗来讲就是如下情况:
在这里插入图片描述
举例说明:
(1)二分查找 T(n)=T(n/2)+O(1)
在这里插入图片描述
(2)归并排序 T(n)=2T(n/2)+O(n)
在这里插入图片描述
(3)二叉树遍历 T(n)=2T(n/2)+O(1)
在这里插入图片描述
使用主定理主要可以用来快速求解这种类似递推关系式的时间复杂度。

参考:https://zhuanlan.zhihu.com/p/113406812

你可能感兴趣的:(算法,算法,数据结构)