【发布时间】:2012-03-10 21:32:49
【问题描述】:
我目前正在分析 maximum subarray problem 的蛮力算法和分治算法(递归)。
使用蛮力算法,最坏情况的运行时间是 O(n^2)。 使用递归算法,最坏情况的运行时间为 O(n*log(n))。
但是对于直到某个常数(例如 k)的小输入,蛮力实际上更快,所以我想使用直到 k 的蛮力,然后再递归。
我不确定如何分析这个,即使用参数 n 和 k。 (插入/合并排序也有类似的问题,它需要 O(k^2*(n/k))=O(n*k),所以我想我可以使用相同的结果但是......)。
让我尝试重新表述,并使用 theta 表示法。
“在递归中使用蛮力算法的渐近运行时间是多少(使用 n 和 k 作为参数),其中蛮力比递归快到 k = 50。”
我必须同时包含参数 n 和 k,而递归树是我们迄今为止测试这些问题的唯一主题。
【问题讨论】:
-
Kadane 的算法有什么问题?