2011-06-11 55 views
1

STL中valarray::minvalarray::max函数的时间复杂度是多少?valarray复杂度

另外,什么是寻找各种其他STL组件的时间/空间复杂性的好来源?

+0

他们怎么能比'O(N)'其他的什么吗? – ildjarn 2011-06-11 05:19:17

+0

当第一次被叫时,是的,他们应该花'O(N)'的时间。但也许有可能将它存储在一个字段中,以便将来的调用可以获取存储的值,而不是再次检查它。 – loudandclear 2011-06-11 05:23:18

+0

它是可能的(如果你保持跟踪数组的变化值) - 但它没有指定。也就是说,你可能(虽然我怀疑它)有一个不同的实现,但是标准指定了O(n)。 – nimrodm 2011-06-11 06:29:31

回答

2

O(N)

这些功能不缓存它们的结果。

在任何stl参考中搜索标题为“复杂性”的部分,例如

http://www.cplusplus.com/reference/algorithm/max_element/

http://www.sgi.com/tech/stl/min_element.html
http://www.sgi.com/tech/stl/max_element.html

时间复杂度规范是用于几乎所有方法和功能STL说明书的一部分。

记忆的复杂性通常不指定..

有很好的理由,这些[低级别]功能不缓存最小值/最大值结果:
如果你想迅速获得容器的最小/最大元素经常被修改,则可以
(1)cahe /维持最小值/最大值自己
(2)使用堆或树木代替矢量