Jes*_*der 10

如果你在3.5的解决方案中更加小心,差异将更加清晰.你的第一行

T(n) <= n/4 (lg n)/4 + 3n/4 (3 lg n)/4 + n
Run Code Online (Sandbox Code Playgroud)

是不对的.首先,归纳假设是存在C这样的常数

T(n) <= C n log n
Run Code Online (Sandbox Code Playgroud)

所以你可能应该保持这种状态C.其次,您正在跳过删除楼层功能的步骤.你真正知道的是(C为了简单而忽略常数)

T(n) <= floor(n/4) lg (floor(n/4)) + floor(3n/4) lg (floor(3n/4)) + n
Run Code Online (Sandbox Code Playgroud)

那你怎么照顾地板?好吧,floor(x) <= x; 但是lg(floor(x))(显示两次)呢?这里的关键是lg增加功能,所以lg(floor(x)) <= lg(x)也是如此.所以

T(n) <= n/4 lg(n/4) + 3n/4 lg(3n/4) + n
Run Code Online (Sandbox Code Playgroud)

现在,随着对数的某些属性清理(你需要使用提示有关lg 3),并完成你的感性的一步.

好的,知道这与3.6的区别是什么?那么,现在你有了天花板功能而不是地板功能,所以你不能忽略它.但

ceiling(x) <= x + 1
Run Code Online (Sandbox Code Playgroud)

所以你可以类似地工作,还有一些额外的+ 1因素.尝试使用他们的提示,它应该没问题.