我需要收集的數據結構,可以做到以下幾點:最佳數據結構使用兩結束排序列表
- 進行排序
- 讓我迅速流行值關閉前和回來就行的O(log n)的
- 我插入一個新值後
- 允許用戶指定的比較函數,因爲我將要保存的元組,並要作爲排序依據一個特定的值保持排序狀態
- 線程安全不需要
- 可選允許高效haskey()查詢(我很高興地維護單獨的哈希表,這雖然)
在此階段我的想法是,我需要一個優先級隊列和一個哈希表,雖然我不知道我是否可以快速彈出這兩個端點的優先級隊列值。另一種可能是簡單地維護一個OrderedDictionary並且每次向它添加更多數據時進行插入排序。因爲我對中等數量的項目(我估計少於200,000)的表現感興趣,所以我不確定我需要這些操作的漸進性能。 n不會無限增長,因此k
的k
的k * O(n)
可能與O(n)
一樣重要。也就是說,我寧願插入和彈出操作都需要O(log n)
時間。
此外,Python中是否有特定的實現?我真的很想避免自己寫這段代碼。
我假設「快速流行」的意思是最多O(log n)。但是,您需要多快才能插入新值?上)? O(log n)? O(1)? – kennytm 2010-05-15 06:21:54
感謝KennyTM澄清了這個問題。 – fmark 2010-05-15 06:25:38