2011-06-11 75 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)使用堆或樹木代替矢量