来自合并排序的修改案例的递归big-o(T(n / 2)+ cn)

时间:2017-09-19 01:48:25

标签: big-o

什么是大的o    T(n)= T(n / 2)+ cn

我知道mergesort情况T(n)= 2T(n / 2)+ cn即线性

并且我能够解决T(n)= 2T(n / 2)+ c以获得线性但在第一个中感到困惑...

1 个答案:

答案 0 :(得分:1)

第一个应该很简单:

T(n) = T(n/2) + cn = T(n/4) + cn/2 + cn = T(n/8) + cn/4 + cn/2 + cn
     = T(1) + c(n/2^m + ... + n/4 + n/2 + n)
     <= T(1) + c(n + n/2 + n/4 + n/8 + ...) = 2cn + T(1)

m = log(n)

因此就大写符号而言T(n) ~ O(n)

顺便说一下,不难证明这实际上是n的那个,

T(n) = T(n/2) + cn = T(n/4) + cn/2 + cn = T(n/8) + cn/4 + cn/2 + cn
     = T(1) + c(n/2^m + ... + n/4 + n/2 + n)
     >= T(1) + c(n/2 + n/4 + n/8 + ...) = cn + T(1)

因此T(n)实际上是n的theta,因为n的大o和大ome。