0
Java有multiset,SmallTalk有一個Bag類,它們被認爲是相同的函數:保留一組值,但允許多個值(每個值都有一個值)。multiset或bag提供的時間複雜度是否比保持密鑰計數的簡單哈希好?
但似乎multiset可以通過一個哈希表來實現,該哈希表可以對鍵進行計數(或者可能還有其他可能的實現)。
做一些multisets或bag的實現提供比上面的散列更好的時間複雜性嗎?所需的操作可能是
- 插入項目
- 刪除項
- 得到一組
- 在集合
尤其得到最大值最小值,我希望對於上述4個操作中的每一個,都可以比O(n)
更好,可能全部是O(log n)
或更好。 (只有在多個數據集按照某種排序的方式維護時,上面的3和4預期爲O(log n)
)
對於散列表,在獲取最小值或最大值「O(n)」時是不是插入或刪除'O(1)'?如果它是一個有序集...那將是什麼數據結構?如果它是一個數組,那麼插入可以是'O(n)' –
哎呀,你說得對,我的意思是說O(1)而不是O(n)。我糾正了這一點,謝謝:) – Astrotrain