我试图找出一种算法的运行时间。 它是一种其工作原理是将问题分成组三分之二的(它的CLR排序)的。 我有一些麻烦来了吧,这就是我有:
T(N)= 3T([2N / 3)+1(1是因为除了递归调用,有一个交换,其可以或可以不进行。假设它完成,它仍然是唯一的常数成本。)
T(n)=3T([2([2n]/3+1)]/3+1)+1
T(n)=3T([2([2([2n]/3+1)]/3+1)]/3+1)+1
T(n)=3T([2([2([2([2n]/3+1)]/3+1)]/3+1)]/3+1)+1
等等......直到我们可以假设,在某一时刻,我们终于打了T(n)的基本情况,并为运行时获得的1恒定值。 这给了我们:
3([2([2([2([2(...........)]/3+1)]/3+1)]/3+1)]/3+1)+1 with logn terms (that's the "......." in the middle). This gives:
3*(2n/3+1)^(logn)+1*logn
3*(2n/3+1)^(logn)+logn
那么我认为,因为如果日志的基地为2n / 3 + 1,我们可以简化它仅仅是3 * LOGN + LOGN,我们可以这样做。 (我不断听到这样做渐近记法的时候,我们选择了不事日志的基础....)
这成为4logn。 该系数降到远变得简单LOGN。
这个对吗? 我不知道如果我扩大这个正确,或者如果我的日志操作是合法的......而且,这是什么最后的结果 - 大O,θ,等我不知道我在看。 ..
谢谢。