这种复发的解决方案是什么?
T(n)= T(n / 1000)+ T(999n / 1000)+ cn。
我认为它的O(n log n)因为每个级别完成的工作将是cn并且树的高度将是log n到1000/999的基数,但是我不确定是否推理已验证。这是对的吗?
答案 0 :(得分:0)
需要注意的是,对于第一个log 1000 n个层,递归的所有分支都将处于活动状态(即n / 1000个案例的分支将不会触底)每层完成的工作将是Θ(n)。这使得运行时的下限立即为Ω(n log n),因为有Θ(log n)层,每个都执行Θ(n)。
对于下面的图层,工作开始下降,因为n / 1000案例的分支将触底。但是,您可以通过假装树中的每个图层都执行Θ(n)工作来完成工作。在这种情况下,在999n / 1000个案例最低点之前会有log 1000/999 n层,因此你得到O(n log n)的上限,因为你有Θ(log n)做Θ(n)的各层都有效。
由于完成的工作是Ω(n log n)和O(n log n),因此运行时间为Θ(n log n)。
希望这有帮助!