时间复杂度分析---主定理

一直以来时间复杂度都不会算呜呜呜,今天理一理。鱼头(如图):

证明咱就算了,没这脑子。对于第一种情况,举几个栗子:

1)例1:二叉树的遍历。

           T(n)=2T (n/2)+Θ (1) 。

           其中(a=2), (b=2), (f(n)=1), 此时(ϵ=1)。

           所以 (T(n)=Θ(n)) 。

2)例1:归并排序。

           T(n)=2T(n/2 )+Θ(n)  。

           其中(a=2), (b=2), (f(n)=n),此时(k=0)。

           所以T(n)=Θ(nlog 2 n)

      例2:二分搜索(折半搜索)。

           T(n)=T(n/2 )+Θ(1)  。

           其中(a=1), (b=2), (f(n)=1), 此时(k=0),

           所以T(n)=Θ(log 2 n)。

3)没栗子了...(其实和第一种情况差不多)

例题解析(具体过程)

1)

        第一步:列出a=9,b=3,f(n)=n;

        第二步:计算=

        第三步:与f(n)比较,发现是第一种情况,代入计算,答案T(n)=Θ(n^2);

2)

         第一步:列出a=1,b=2/3,f(n)=1;

         第二步:计算=1;

         第三步:与f(n)比较,发现是第二种情况,代入计算,答案T(n)=Θ(logn);

3)

    【NOIP2015初赛】某算法的计算时间表示为递推关系式:

     T(N)=T(N−1)+N, T(0)=1。则该算法的时间复杂度为_______。

     

    【解析】难道这个就要用主定理了?容易推导出T(n)=T(0)+1+...+n=1+n∗(n+1)/2,   则时间复杂度为O(n^2 ) ,选D

猜你喜欢

转载自blog.csdn.net/fm19870504/article/details/82942085
今日推荐