我的情況是這樣的:具有快速隨機訪問的堆狀數據結構?
- 我有實體的集合,每個都有一個「善」屬性。
- 我希望一次抓一個實體,從「最好」到「最差」。
- 在獲得「最佳」實體後,我的其他實體中的幾個(相對較少)實體的「善」屬性會發生變化,而且這一變化必須納入我即將決定的下一個「最佳」實體中。
- 一些(相對較少的)實體在抓取後可能變得「毫無價值」,這些應該從我的收藏中刪除。
- 由於我剛剛抓住的實體很容易構造出一組現在「髒」的對象,也就是說,這組實體可能具有與現在不同的「優點」,或者已經成爲「不務正業」。
所以,我需要的數據結構,讓我:
- 迅速搶佔一個集合的「最大」(如,一個最大堆)。
- 快速更新我的集合中對象的基礎排序以適應上述情況。 (如果我們可以在底層堆實現中訪問髒對象的位置(例如數組索引),那麼在堆中很容易做到。)
- 有保證我的集合中的條目之間沒有衝突。 (這些條目是對上述實體的引用。)
我的想法是將max-heap與無序映射一起使用,鍵入堆條目,並且值等於,例如,堆實現中底層數組中對象的各個索引。
我想知道的是,是否可能有一個更適合這種情況的數據結構。
定義「相對較少」1/10的元素? sqrt(n)的元素? log(n)的元素?日誌(日誌(n))的? ....每次迭代需要更新的元素的規模是多少? – amit 2014-11-21 20:46:06
爲了我們的目的,抓取後需要更新的實體的數量被視爲常量。更重要的是,將會有大量的原始實體數量大致呈線性。 – 2014-11-21 20:50:03
物品的善良更新是否更好? – 2014-11-21 20:56:17