假設我有很多數值。我知道最大價值的指數。保持容器的最大值。
在每個步驟中,我會根據某些標準選擇一個值並根據一些規則對其進行修改(這裏不重要)。 每次修改後,我必須知道數組的最大值。
的最簡單的方法是比較修改的值N
和先前最大值O
並且如果N > O
然後更新最大值作爲N
。然而,如果被修改的索引是先前最大值的存儲位置,那麼情況會變得棘手。在這種情況下,我需要掃數組,並找出O(L)
的最大值是多少,其中L
是數組的長度。 我想避免這種最糟糕的情況下的複雜性。
實現它的最好方法是什麼? (算法或數據結構?)
一個字:堆。 –
兩個字:堆排序。 – Jason
一個鏈接:http://stackoverflow.com/questions/7134129/stack-with-find-min-find-max-more-efficient-than-on – 0x90