我想實現雙端優先隊列有以下限制:需要實現雙端優先級隊列的最佳方式是什麼?
在一個固定的大小來實現array..say 100個elements..if新元素需要後添加陣列是滿的,歷史最悠久的需要移除
需要最大和最小在O(1)
如果可能插入在O(1)
如果可能刪除最小在O(1)
清楚爲O空/初始狀態(1)如果在在O時刻在數組元素的數目的可能
計數(1)
我想O(1)所有上述5個操作,但它不可能在所有的O(1)在相同的實現。至少O(1)在3次操作上和O(log(n))在其他2次操作上應該足夠了。
如果有任何指針可以提供給這樣的實現,將不勝感激。
你有試過什麼嗎?至少在O(1)中清空/初始化狀態對於瞭解基本數據結構的人來說是微不足道的:( – Fallen
@Fallen ya即使計數太多......只是記住它......我只是在做操作和時間複雜性明確:),所以有人建議一個特定的實現將有清晰的想法的想法 – Medicine
嗯,你不能有插入*和*提取最小/最大值是恆定的或分期不變的時間,因爲那意味着一個線性時間排序算法。所有假設您的密鑰不是整數或這樣,但與比較運算符的黑匣子。 – delnan