【发布时间】:2015-06-02 05:05:25
【问题描述】:
我想使用分治法计算一行整数中的第 i 个最大元素,并分析算法的渐近时间复杂度。
Algorithm ith(A,low,high){
q=partition(A,low,high);
if (high-i+1==q) return A[q];
else if (high-i+1<q) ith(A,low,q-1);
else ith(A,q+1,high);
}
对吗?如果是这样,我们如何找到它的时间复杂度?
时间复杂度由以下递归关系描述:
T(n)=T(n-q)+T(q-1)+Θ(n)
但是我们如何在不知道 q 值的情况下解决这个递归关系呢?
或者有没有一种时间复杂度较低的算法来计算一行整数中的第 i 个最大元素?
【问题讨论】:
-
“时间复杂度”是什么意思?平均,最坏情况,还有别的吗?然后可以确定正确的递推关系。无论您感兴趣的是什么版本的“时间复杂度”,您对递归关系的了解目前都是错误的。
标签: algorithm divide-and-conquer recurrence