在this post on how to find the K largest of N elements中,提出的第二种方法是:
虽然我理解这种方法,但我不明白他们的计算方法
时间复杂度O((n-k)*k)
。
从我的角度来看,您正在对n-k
元素进行线性遍历,并对每个元素进行单一比较。然后可能替换临时K
元素数组的一个元素。
更具体地说,他们计算的*k
方面在哪里?
O((n-k)*k)
的时间复杂性来自哪里?为什么它们会乘以n-k
?
答案 0 :(得分:1)
让我们考虑一下foreach($types as $type) {
$c = Mage::app()->getCacheInstance()->cleanType($type);
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
}
:
kth iteration
现在,您将arr[k] > min(temp[0..k-1]
替换为min(temp[0..k-1])
。
现在您再次需要计算arr[k]
的更新min
,因为这会发生变化。它可以是您更新的temp[0..k-1],
所以在最坏的情况下,你每次更新min,因此temp[0..k-1]
。
因此,时间复杂度 = O(k)