主方法推导过程

在归并排序或者和二叉树相关的算法中,我们需要将处理的数据,分割成两部分,然后再组合,此时关于时间复杂度,就成为了这样

T(N) = 2T(N/2) + O(N)

我们知道,归并排序的时间复杂度是 O(NlogN),那么这是怎么推导出来的呢?或者说更抽象一点,类似于这种分治手段的时间复杂度怎么计算呢?在《算法导论》中提出了主方法的概念,如下

image

正如图中所示,由于a,b的不同关系,T(n)有三种可能性,接下来就来详细推导这个过程。

首先我们先得做一个假定,T(1)=1,因为如果数据只有一个的话,我们根本不需要排序,只需要遍历一下即可,然后设 N = b的k次方,这样就去掉了n这个变量,同时a,b,n,d就被连接起来,我们只需要对式子进行化简,并注意合并,即可完成推导……

详细推导可以查看视频哦

image

小松漫步递归时间复杂度计算大杀器视频号推导所用到的知识基本大学都学过,但是小松在自己推导的时候,总是卡壳,学习只要 20 分钟,但是录视频却录了 1 个小时,剪辑更是花了 2 小时……不过,这也让小松对于推导过程烂熟于心,加油吧,打工人公众号回复【数据结构与算法】,即可获取pdf版

你可能感兴趣的:(主方法推导过程)