主定理与时间复杂度

非常有意思的东西,我大概看了一下wiki百科和百度百科,然而发现都看不懂。

只好在网上找了一篇看起来不怎么严谨的博客,不过算出来的是对的?那就默认是对的吧qwq

主定理

定义

如果我们要解决规模为$n$的问题,通过分治,得到$a$个规模为$\frac{n}{b}$的问题,每次的额外复杂度为$O(n^d)$

$T(n) <= aT(\frac{n}{d})+c(n^d)$

$$
\begin{align*}
T\left( n\right) =\begin{cases}O\left( n^{d}\log n\right) &\left[ a=b^{d}\right] \\ O\left( n^{a}\right) &\left[ a < b^d\right]\\ O(n^{ \log _b^a})&\left[ a>b^{d}\right] \end{cases}
\end{align*}
$$

证明

咕咕咕。

 

实际应用

肯定就是分析算法复杂度啦。。

二分搜索

$a = 1, b = 2, d = 0$

复杂度:$O(logn)$

归并排序

$a = 2, b = 2, d = 1$

复杂度:$O(nlogn)$

基数排序

$a= 10, b = 10, d = 1$

复杂度:$O(nlogn)$ ?

FFT

$a = 2, b = 2, d = 1$

复杂度:$O(nlogn)$

Karatsuba快速乘法

$a = 3, b = 2, d =1$

复杂度:$O(n^{log_2^3})$

参考资料

https://blog.csdn.net/qq_35649707/article/details/77770463#commentsedit

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值