分而治之算法以什么比例停止为 O(N * log(N))

With what ratio does the Divide and Conquer Algorithm stop being O(N * log(N))

分而治之算法的 运行 时间复杂度为 O(N * log(N)),因为它将问题拆分为 2 个较小的子问题。然后算法可以对两个较小的问题递归地再次 运行,直到找到给你 运行 时间 O(N * log(N)) 的解决方案。这是一些排序算法用来实现上述运行时间的策略。 (他们将问题分成两个大小相等的部分 -> 比率 1/2 和 1/2)

那么这个划分的比例有什么限制呢?如果将问题拆分为原始大小的 1/4 和 3/4,运行时间是否仍然为 O(N*log(N))? 1/10 和 9/10 或更少呢?

根据Akra-Bazzi theorem即可准确回答。如果我们有 T(n) = T(a*n) + T(b*n) + n 使得 ab 是正常数,小于 1,并且 a + b = 1,那么我们可以说 T(n) 将在 O(n log n).

因此,对于a = 1/10b = 9/10,我们可以说与a = 1/2b = 1/2a = 1/4b = 3/4相同。